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
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.
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.
Dubito che questo possa utilizzare le risorse in aar. – Juude
C'è qualche soluzione a riguardo? –
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. –