2016-11-21 7 views
1

私は自分自身のアプリケーションをAOSPでコンパイルしています。私は自分自身のアプリケーションをAOSPのpackage/appに追加したいと思います。 ?私は私のアプリで使用されますが、これらの第三者に.soファイルを使用しようとAndroid.mkを作成する方法をいくつか*.soのファイルを持ってここに私のAndroid.mkです:Android.mkにサードパーティの* .soファイルを追加する方法は?

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)) 

ビルドAPKの内容は示していますenter image description here

しかし、私はt find * .soファイルを私のビルドapk

答えて

3

あなたは単一の独立したモジュールとして使用するそれぞれの事前ビルドされたライブラリを宣言する必要があります。これを行うには、次の手順を実行します。

  1. モジュールに名前を付けます。この名前は、あらかじめ作成されたライブラリ自体の名前と同じである必要はありません。モジュールのAndroid.mkファイルで
  2. 、あなたが
  3. を提供している構築済みのライブラリへのパスをLOCAL_SRC_FILESに割り当てるには、共有(.soという)または静的(.A)ライブラリを使用しているかどうかに応じて、PREBUILT_SHARED_LIBRARYまたはPREBUILT_STATIC_LIBRARYを含めます。

For more details about Declaring a Prebuilt Library

# 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

あなたが言ったように私の '.mk'を書いていますが、これは上で見ることができます。ビルドapkで' * .so'ファイルを見つけることはできません。@ mablevj – helloliu

1

あなたはビルド済み静的ライブラリ(.aという拡張子を持つもの)を持っている場合は動作します@mablevjによるソリューション。共有ライブラリ(.so拡張子)では、3つの.soファイルをすべて1つの.soファイルにまとめることができないため、各.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) 

最終的な.apkに表示されます。また、これらの3つの定義を別々のファイルに入れて、クリーンな状態に保つ必要がありますが、必須ではありません。

関連する問題