2015-07-03 21 views
8

Robię Android niestandardowy rozwój ROM teraz. system kompilacji aosp oparty jest na Android.mk, ale chcę dołączyć kilka bibliotek aar, czy możliwe jest dołączenie plików aar do Android.mk?aar wsparcie w Android.mk

Odpowiedz

9

Należy dodać następujące bloki do 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) 

Należy również pamiętać, spełnia minSdkVersion wymagane przez biblioteki do swojego pliku manifestu.

+0

Wątpię, by to mogło wykorzystać zasoby w AAR. – Juude

+0

Czy jest jakieś rozwiązanie na ten temat? –

+0

Zgodnie z implementacją systemu budowania Google AOSP - jeśli używasz LOCAL_STATIC_JAVA_AAR_LIBRARIES zamiast LOCAL_STATIC_JAVA_LIBRARIES - jedyną różnicą są zasoby. Odłożył zasoby na bok i łączy je z pakietem zasobów na etapie łączenia pakietów. –

5

Odpowiedź Kostiantyna Luzana ma problem. Po kompilacji zasoby w pliku aar zostaną dodane do pliku R głównego pakietu, ale nie do pliku R pakietu AAR. Na przykład nazwa pakietu aar to my.aar, nazwa pakietu głównego projektu to my.main. Aar ma ciąg o nazwie "string_in_aar". Po kompilacji id łańcucha to my.main.R.string_in_aar zamiast my.aar.R.string_in_aar. To powoduje awarię apk, ponieważ kod w aarze używa my.aar.R.string_in_aar.

Rozwiązaniem jest użycie: LOCAL_AAPT_FLAGS + = --extra-packages {nazwa pakietu pakietu}. Otrzymasz dwa pliki R. Mają trochę treści. Jeden jest pakietem głównym, drugi to pakiet AAR.