2015-07-03 5 views
8

я делаю андроид пользовательский ROM разработка сейчас. система сборки aosp основана на Android.mk, но я хочу включить некоторые библиотеки aar, возможно ли включать в Aр-библиотеки в Android.mk?aar поддержка в Android.mk

ответ

9

Вы должны добавить следующие блоки в ваш Android.mk

LOCAL_STATIC_JAVA_AAR_LIBRARIES:= <aar alias> 
. 
. 
. 
include $(BUILD_PACKAGE) 

include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := <aar alias>:libs/<lib file>.aar 

include $(BUILD_MULTI_PREBUILT) 

Пожалуйста, также быть в курсе Satisfy minSdkVersion требуется библиотеки в ваш файл манифеста.

+0

Я сомневаюсь, что это может использовать ресурсы в aar. – Juude

+0

Есть ли какие-либо решения по этому поводу? –

+0

В соответствии с реализацией системы сборки Google AOSP - при использовании LOCAL_STATIC_JAVA_AAR_LIBRARIES вместо LOCAL_STATIC_JAVA_LIBRARIES - единственная разница - это ресурсы. Он отложил ресурсы и объединил их с вашими пакетами ресурсов на этапе компоновки пакетов. –

5

У решения Kostiantyn Luzan есть проблемы. После компиляции ресурсы в aar будут добавлены в R-файл основного пакета, но не в R-файл пакета aar. Например, имя пакета aar - my.aar, основным именем пакета проекта является my.main. Aar имеет строку с именем «string_in_aar». После компиляции идентификатор строки является my.main.R.string_in_aar, а не my.aar.R.string_in_aar. Это приводит к сбою apk, потому что код в aar использует my.aar.R.string_in_aar.

Решение: LOCAL_AAPT_FLAGS + = --extra-packages {aar package name}. Вы получите два файла R. У них есть некоторый контент. Один пакет является основным пакетом, другой - пакетом aar.

 Смежные вопросы

  • Нет связанных вопросов^_^