support aar sur Android.mk

je fais du développement de ROM personnalisé android maintenant. le système de construction d'aosp est basé sur Android.mk, mais je veux inclure quelques bibliothèques aar, est-il possible d'inclure des libaires Aar dans Android.mk ?

8
demandé sur Juude 2015-07-03 14:33:37

2 réponses

vous devez ajouter les blocs suivants dans votre 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)

s'il vous plaît également être conscient de satisfaire minSdkVersion requis par la bibliothèque dans votre fichier de manifeste.

9
répondu Kostiantyn Luzan 2015-12-30 18:49:02

la réponse de Kostiantyn Luzan a un problème. Après compilation, les ressources de l'aar seront ajoutées au fichier R de mon paquet principal, mais pas dans le fichier R du paquet de l'AAR. Par exemple, le nom du paquet de l'aar est my.le nom du paquet du projet principal est my.principal. L'aar a une chaîne de caractères nommée "string_in_aar". Après compilation, l'id des chaînes est my.principal.R. string_in_aar plutôt que la mienne.de l'aar.R. string_in_aar. Cela provoque un crash de l'apk, car le code dans l'aar utilise mon.de l'aar.R. string_in_aar.

la solution est l'utilisation: LOCAL_AAPT_FLAGS + = -- extra-packages {nom du paquet aar}. Vous obtiendrez deux R fichier. Ils a la de certains contenus. Un paquet est le paquet principal, l'autre est de l'aar paquet.

6
répondu qhdwangnan 2016-04-18 08:17:54