2017-09-25 6 views
1

J'ai une application android existante que je voudrais construire dans AOSP (arborescence des sources Android) en utilisant Android.mk. L'application utilise une disposition de contrainte qui n'est pas incluse dans l'arborescence des sources AOSP (AFAIK). Comment puis-je satisfaire cette dépendance? D'autres bibliothèques de support sont incluses telles que recyclerview, v4 etc mais pas la disposition de contrainte.Comment inclure la bibliothèque de mise en page de contraintes dans un projet AOSP

Dois-je télécharger la lib aar et si oui, comment l'ajouter/l'inclure? Ou devrais-je obtenir la source (où télécharger?) Et le construire quelque part dans l'arbre source?

Merci à l'avance pour toute aide.

Répondre

2

Il existe plusieurs façons de résoudre votre problème.

1. Ajouter un préconstruit .apk

Vous ne devez pas mettre votre code source dans l'arborescence PSBA. Vous pouvez simplement ajouter votre fichier .apk, le mettre soit dans packages/apps/YourApp, ou vendor/yourname/packages/apps/YourApp, ou encore your_dir_name/packages/apps/YourApp et créer un fichier Android.mk pour construire le système pour déterminer votre application. Votre Android.mk sera comme:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE := YourApplication # your .apk name 
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk 
LOCAL_MODULE_CLASS := APPS 
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) 

include $(BUILD_PREBUILT) 

Avantages: vous pouvez construire votre projet avec gradle.

2. Ajoutez le code source pour PSBA

Si vous voulez toujours placer votre code source pour packages/apps et construire là-bas, vous pouvez mettre un ConstrainsLayout dans le répertoire de votre projet libs/ et ajouter à votre Android.mk quelque chose comme :

LOCAL_PATH := $(call my-dir) 
    include $(CLEAR_VARS) 

    # List of static libraries to include in the package 
    LOCAL_STATIC_JAVA_LIBRARIES := constraint-layout 

    # Build all java files in the java subdirectory 
    LOCAL_SRC_FILES := $(call all-subdir-java-files) 

    # Name of the APK 
    LOCAL_PACKAGE_NAME := YourApplication 

    # Tell it to build an APK 
    include $(BUILD_PACKAGE) 

Si vous ne le faire fonctionner (je ne l'ai pas rencontré ce problème, but he did):

LOCAL_STATIC_JAVA_LIBRARIES := libconstraint-layout 

include $(BUILD_PACKAGE) 

Autres trucs, et enfin

include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libconstraint-layout:libs/constraint-layout.aar 

Inconvénients: Vous devrez construire votre code soit avec make par mma ou mm -B, ou d'avoir un gradle comme votre deuxième système de construction pour le développement. La deuxième option fonctionnera, mais pour établir une construction complète et pour avoir votre .apk intégré dans le répertoire out/ vous devrez le construire avec make.

3. Ajout d'un ConstraintLayout

Si vous voulez avoir plusieurs applications qui utilisent une mise en page de contrainte, vous pouvez l'ajouter à un nouveau module de bibliothèque comme précompilé .aar. Peut se trouver quelque part dans 'vendeur/votre nom/bibliothèques' ou 'votre_répertoire/bibliothèques' respectivement. Il est similaire à l'ajout d'un .apk préconfiguré (je n'ai ajouté aucun .aar comme ceci, donc ceci n'a pas été testé par moi et peut contenir des erreurs!):

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE := constraint-layout 
LOCAL_SRC_FILES := $(LOCAL_MODULE).aar 
LOCAL_MODULE_SUFFIX := .aar 

include $(BUILD_PREBUILT) 

Et après cela, en vous de votre application Android.mk devra ajouter:

LOCAL_STATIC_JAVA_LIBRARIES := constraint-layout 

Vous pouvez ajouter un .aar de ConstraintLayout au prebuilds/ comme il finira par être là un jour .

Il y a un bon sujet à propos Android.mk: https://wladimir-tm4pda.github.io/porting/build_cookbook.html

+0

Merci! L'option # 3 a fonctionné comme par magie! – kotsen