2016-11-21 2 views
1

Je compile ma propre application dans AOSP, et je veux ajouter ma propre application dans le paquet/application dans AOSP. ? J'ai quelques *.so fichiers qui seront utilisés dans mon application, mais comment écrire Android.mk sur le point d'utiliser ces tiers .so fichiers ici est mon Android.mk:comment ajouter des fichiers * .so tiers dans Android.mk?

LOCAL_PATH := $(call my-dir) 
    include $(CLEAR_VARS) 
    LOCAL_MODULE_TAGS := optional 
    LOCAL_SHARED_LIBRARIES :=myprebuilt 
    LOCAL_STATIC_JAVA_LIBRARIES :=OrbbecJar 
    LOCAL_SRC_FILES := $(call all-java-files-under, src)\ 
       $(call all-java-files-under, openCVLibrary2410/src)\ 
       openCVLibrary2410/src/main/aidl/org/opencv/engine/OpenCVEngineInterface.aidl 
    LOCAL_RESOURCE_DIR:= $(LOCAL_PATH)/openCVLibrary2410/res\ 
        $(LOCAL_PATH)/res 
    LOCAL_CERTIFICATE := platform 
    LOCAL_PACKAGE_NAME := HelloWorld 
    include $(BUILD_PACKAGE) 
    ################################################## 
    include $(CLEAR_VARS) 
    LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := OrbbecJar:OrbbecSDKPro_161114_v1.1.2.jar 
    include $(BUILD_MULTI_PREBUILT) 
    include $(CLEAR_VARS) 
    LOCAL_MODULE:=myprebuilt 
    LOCAL_SRC_FILES:=libs/armeabi-v7a/libHWWrapper.so\ 
        libs/armeabi-v7a/libXnDeviceSensorV2.so\ 
        libs/armeabi-v7a/libXnFormats.so 
    include $(PREBUILT_SHARED_LIBRARY) 
    # Use the folloing include to make our test apk. 
    include $(call all-makefiles-under,$(LOCAL_PATH)) 

La construction contenu APK montre: enter image description here

mais je peux t find * .so`files dans ma construction apk

Répondre

3

Vous devez déclarer chaque bibliothèque prédéfinie que vous utilisez comme un seul module indépendant. Pour ce faire, procédez comme suit:

  1. Attribuez un nom au module. Ce nom n'a pas besoin d'être le même que celui de la bibliothèque préconstruite, elle-même.
  2. Dans le fichier Android.mk du module, attribuons à LOCAL_SRC_FILES le chemin de la bibliothèque préconstruite que vous fournissez
  3. Inclure PREBUILT_SHARED_LIBRARY ou PREBUILT_STATIC_LIBRARY, selon que vous utilisez un partage (.so) ou d'une bibliothèque statique (.a) .

For more details about Declaring a Prebuilt Library

Exemple

# How to fetch the ssl_static lib 
include $(CLEAR_VARS) 
LOCAL_MODULE := ssl_static 
LOCAL_SRC_FILES := <folder_path>/libssl_static.a 
include $(PREBUILT_STATIC_LIBRARY) 

# shared library 
include $(CLEAR_VARS) 
LOCAL_MODULE := HWWrapper 
LOCAL_SRC_FILES := <folder_path>/libHWWrapper.so 
include $(PREBUILT_SHARED_LIBRARY) 
+0

J'écris mon '.mk' comme vous l'avez dit, que vous pouvez voir ci-dessus.Mais je ne peux pas trouver' * .so'files dans le build apk. @ Mablevj – helloliu

1

La solution par @mablevj fonctionne si vous avez des bibliothèques préconstruits statiques (ceux avec l'extension .a). Pour les bibliothèques partagées (extension .so), vous devez définir chaque .so, car vous ne pouvez pas combiner les trois fichiers .so dans un seul fichier .so.

include $(CLEAR_VARS) 
LOCAL_MODULE := HWWrapper 
LOCAL_SRC_FILES := libHWWrapper.so 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := XnDeviceSensorV2 
LOCAL_SRC_FILES := libXnDeviceSensorV2.so 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := HWWrapper 
LOCAL_SRC_FILES := libXnFormats.so 
include $(PREBUILT_SHARED_LIBRARY) 

Ensuite, il apparaîtra dans votre .apk final. Vous devriez également mettre ces trois définitions dans un fichier séparé pour garder les choses propres, mais ce n'est pas nécessaire.