Я знаю, что опоздал, но все же стоит поделиться этой информацией.
LOCAL_STATIC_JAVA_AAR_LIBRARIES
поддержка AAPT2 была прервана в какой-то момент.
Поэтому, даже если вы добавите свою библиотеку, как описано выше, ресурсы из aar не будут связаны.
из истории мерзавцев AOSP:
30 октября 2014 г. Добавить поддержку предварительно созданных AAR.
Aars были распакованы в /.../ промежуточные * каталоги и связаны с модулями AOS.
5 декабря 2015 г. Поддержка для сборки с AAPT2
Как вы можете видеть в core / android_manifest.mk: 26 , связывать распакованные файлы aars больше не нужно, поскольку AAPT2 поддерживает прямое соединение с массивами.
Но, к сожалению, они не были правильно добавлены как --extra-packages
.
Ошибка была исправлена в android-p-preview-5 .
Если вы все еще разрабатываете для Android 8 или 8.1, пожалуйста, добавьте эти изменения вручную или выберите их в своем дереве. Отлично сработало для меня.
UPD 2018-11-28
Точные шаги, чтобы исправить это для Android 8.1 и ранее:
1) исправление cherry-pick 5 дек. 2015 г. Поддержка для сборки с AAPT2 из aosp
2) в build / core / prebuilt_internal.mk: 593 добавить параметр --auto-add-overlay
$(my_res_package): PRIVATE_AAPT_FLAGS := --static-lib --no-static-lib-packages --auto-add-overlay
3) Поскольку RenderScript был реорганизован намного позже, вы должны явно определить свой модуль aar:
include $(CLEAR_VARS)
LOCAL_MODULE := my-library-module
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := my-library-module.aar
# Provide resources directory in order to compile them, enable AAPT2 for this module
LOCAL_RESOURCE_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,$(LOCAL_MODULE),,COMMON)/aar/res)
LOCAL_USE_AAPT2 := true
# if LOCAL_RENDERSCRIPT_TARGET_API >= 21, resources won't get compiled. Shouldn't affect anything else
LOCAL_RENDERSCRIPT_TARGET_API := 20
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
LOCAL_BUILT_MODULE_STEM := javalib.jar
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_PREBUILT)
Отказ от ответственности: это довольно хакерский обходной путь, который сработал для меня. Из-за нехватки времени и срочной необходимости поддержки старых версий клиентов, я мог пропустить некоторые варианты использования.