2015-07-03 17 views
8

Sto facendo sviluppo personalizzato ROM Android ora. il sistema di build di aosp è basato su Android.mk, ma voglio includere alcune librerie di aar, è possibile includere le librerie di aar in Android.mk?supporto di Android in Android.mk

risposta

9

si dovrebbe aggiungere i seguenti blocchi nel vostro 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) 

ricordiamo inoltre di soddisfare minSdkVersion richiesto dalla libreria nel file manifesto.

+0

Dubito che questo possa utilizzare le risorse in aar. – Juude

+0

C'è qualche soluzione a riguardo? –

+0

In base all'implementazione del sistema di generazione AOSP di Google - quando si utilizza LOCAL_STATIC_JAVA_AAR_LIBRARIES anziché LOCAL_STATIC_JAVA_LIBRARIES - l'unica differenza sono le risorse. Ha messo da parte le risorse e le ha combinate con le risorse del pacchetto nella fase di collegamento dei pacchetti. –

5

La risposta di Kostiantyn Luzan ha un problema. Dopo la compilazione, le risorse nell'aar verranno aggiunte al file R del mio pacchetto principale, ma non nel file R del pacchetto aar. Ad esempio, il nome del pacchetto di aar è my.aar, il nome del pacchetto del progetto principale è my.main. L'aar ha una stringa chiamata "string_in_aar". Dopo la compilazione, l'id delle stringhe è my.main.R.string_in_aar piuttosto che my.aar.R.string_in_aar. Questo fa sì che l'apk si blocchi, perché il codice nell'aar usa my.aar.R.string_in_aar.

La soluzione è utilizzata: LOCAL_AAPT_FLAGS + = --extra-packages {nome del pacchetto aar}. Otterrete due file R. Hanno qualche contenuto. Il pacchetto di uno è il pacchetto principale, l'altro è il pacchetto di aar.