2015-07-03 16 views
8

Ich mache Android benutzerdefinierte ROM-Entwicklung jetzt. Das Build-System von AOsp basiert auf Android.mk, aber ich möchte einige AAR-Bibliotheken hinzufügen, ist es möglich, AAR-Bibliotheken in Android.mk zu integrieren?aar Unterstützung in Android.mk

Antwort

9

Sie sollten folgende Bausteine ​​in Ihr Android.mk hinzufügen

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) 

Bitte auch sich bewusst sein satisfy minSdkVersion erforderlich durch Bibliothek in Ihrer Manifest-Datei.

+0

Ich bezweifle, dass dies Ressourcen in aar verwenden kann. – Juude

+0

Gibt es eine Lösung dafür? –

+0

Laut Google AOSP-Buildsystem-Implementierung - wenn Sie LOCAL_STATIC_JAVA_AAR_LIBRARIES anstelle von LOCAL_STATIC_JAVA_LIBRARIES verwenden - besteht der einzige Unterschied in den Ressourcen. Es hat Ressourcen beiseite gelegt und sie mit Ihren Paket-Ressourcen auf der Paketverknüpfungsstufe kombiniert. –

5

Kostiantyn Luzans Antwort hat ein Problem. Nach dem Kompilieren werden die Ressourcen in der aar der R-Datei meines Hauptpakets hinzugefügt, aber nicht in der R-Datei des AAR-Pakets. Der Paketname des aars lautet beispielsweise my.aar, der Paketname des Hauptprojekts lautet my.main. Das aar hat eine Zeichenfolge namens "string_in_aar". Nach der Kompilierung ist die Zeichenfolgen-ID my.main.R.string_in_aar und nicht my.aar.R.string_in_aar. Das stürzt die apk ab, weil der Code im aar my.aar.R.string_in_aar verwendet.

Die Lösung ist: LOCAL_AAPT_FLAGS + = --Extra-Pakete {aar Paketname}. Sie erhalten zwei R-Datei. Sie haben den gewissen Inhalt. Das eine Paket ist das Hauptpaket, das andere ist das aar-Paket.

Verwandte Themen