2016-11-21 6 views
1

나는 AOSP에서 내 자신의 앱을 컴파일 중이고 AOSP 패키지/app에 내 앱을 추가하고 싶다. ? 내 응용 프로그램에서 사용되지만, 이러한 제 3 자에게 .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. 이 PREBUILT_SHARED_LIBRARY 또는 PREBUILT_STATIC_LIBRARY을 포함 당신이 제공하는 사전 구축 된 라이브러리의 경로를 LOCAL_SRC_FILES에 할당 당신이 공유 (.so를) 또는 정적 (.A) 라이브러리를 사용하는지에 따라 . 당신이합니다 (이 .a 확장자를 가진 사람들) 미리 작성된 정적 라이브러리가있는 경우

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

솔루션 @mablevj에 의해 작동합니다. 공유 라이브러리 (.so 확장자)의 경우 세 가지 .so 파일을 모두 하나의 .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에 표시됩니다. 또한이 세 가지 정의를 별도의 파일에 넣어서 깨끗하게 유지해야하지만 필수는 아닙니다.