Framework載入現有第三方JAR包或SO庫

weixin_33670713發表於2017-07-20

開發板為RK3399

1、現有libdatabase_sqlcipher.so,放置在jniLibs/armeabi下面

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := libdatabase_sqlcipher.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/../lib //指定生成路徑,預設到/system/lib64,由於是32位庫,所以需重新指定

LOCAL_SRC_FILES := jniLibs/armeabi/$(LOCAL_MODULE)

#OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)

include $(BUILD_PREBUILT)


另一種方式:但預設生成在lib64下面

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PREBUILT_LIBS :=libdatabase_sqlcipher:jniLibs/armeabi/libdatabase_sqlcipher.so

LOCAL_PREBUILT_LIBS +=libsqlcipher_android:jniLibs/armeabi/libsqlcipher_android.so

LOCAL_PREBUILT_LIBS +=libstlport_shared:jniLibs/armeabi/libstlport_shared.so

#LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/../lib

include $(BUILD_MULTI_PREBUILT)


2、現有sqlcipher.jar,放置在lib下面

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := sqlcipher.jar

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_MODULE_PATH := $(TARGET_OUT_JAVA_LIBRARIES)//最終生成在/system/framework下面

LOCAL_SRC_FILES := libs/sqlcipher.jar

include $(BUILD_PREBUILT)

另一種寫法:

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := sqlcipher:libs/sqlcipher.jar

include $(BUILD_MULTI_PREBUILT)

該方法生成在 一個臨時目錄,不能自動到/system/framework下面


3、APK編譯,預設為64位,由於SO為32位,需指定,方式為:

#LOCAL_JAVA_LIBRARIES += org.apache.http.legacy

LOCAL_MULTILIB := 32

LOCAL_JNI_SHARED_LIBRARIES := libdatabase_sqlcipher libsqlcipher_android libstlport_shared

LOCAL_PRIVILEGED_MODULE := true

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

4、mm編譯時,需要刪除原有生成的arm64檔案,如果以前存在arm64庫,則APK執行時預設呼叫64的庫。







相關文章