1. 程式人生 > >在Android原始碼中如何吧so庫打包編譯進入apk, 整合第三方庫(jar和so庫)

在Android原始碼中如何吧so庫打包編譯進入apk, 整合第三方庫(jar和so庫)

整合第三方so和jar包

include $(CLEAR_VARS) #jar包編譯            LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=securitysdk:libs/hello.jar #64和32系統選擇不同的庫 ifeq (arm64, $(strip $(TARGET_ARCH)))     LOCAL_PREBUILT_LIBS := libssl:libs/arm64-v8a/libssl.so     LOCAL_PREBUILT_LIBS += libcrypto:libs/arm64-v8a/libcrypto.so     LOCAL_PREBUILT_LIBS += libvivosgmain:libs/arm64-v8a/libaa.so
else                                     LOCAL_PREBUILT_LIBS := libssl:libs/armeabi-v7a/libssl.so     LOCAL_PREBUILT_LIBS += libcrypto:libs/armeabi-v7a/libcrypto.so     LOCAL_PREBUILT_LIBS += libvivosgmain:libs/armeabi-v7a/libtest.so endif                                include $(BUILD_MULTI_PREBUILT

把so庫包含進入apk

LOCAL_JNI_SHARED_LIBRARIES := libssl libcrypto libvivosgmain

LOCAL_MODULE_INCLUDE_LIBRARY := true

 後面Android某個原始碼版本不支援這一處理了,加入下面

LOCAL_MODULE_TAGS := tests 

編譯後代apk在data目錄,so是整合進入apk的 

1)假設so庫是已經存在的,不需要重新編譯的話。只需要用LOCAL_PREBUILT_JNI_LIBS指定(注意包含so的路徑) 2)假設so需要編譯,則需要先用LOCAL_JNI_SHARED_LIBRARIES指定,然後再用LOCAL_MODULE_INCLUDE_LIBRARY := true打包so到apk 最好還要編寫jni下的android.mk 3)LOCAL_MULTILIB := both  32和64都編譯。