在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)

来源:互联网 发布:美国全球的盟友网络 编辑:程序博客网 时间:2024/05/18 01:34

集成第三方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都编译。


阅读全文
0 0
原创粉丝点击