android 原生工程中集成第三方so动态库和.a静态库和apk

在android实际的开发过程中,经过需要使用到第三方的资源,第三方提供的资源包括apk文件,so动态库文件,.a的静态库文件。

而第三方提供的这些资源,经常需要集成到Android的原生工程中。


集成so动态库,Android.mk文件书写如下:

#build lib so
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := libexample.so

LOCAL_MODULE := libexample.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

include $(BUILD_PREBUILT)

上面集成so动态库有个弊端,就是最终生成的so为:libexample.so.so,更好的方式是下面的,编译生成的就是libexample.so:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_PREBUILT_LIBS := libexample.so

include $(BUILD_MULTI_PREBUILT)


集成.a静态库,Android.mk文件书写如下:

#build static lib
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES := libexample.a

LOCAL_BUILT_MODULE_STEM := libexample.a

LOCAL_MODULE_SUFFIX := lib

LOCAL_MODULE := libexample

LOCAL_MODULE_CLASS := STATIC_LIBRARIES

include $(BUILD_PREBUILT)

动态库默认编译输出/system/lib目录下。


动态库链接时,在Android.mk中添加:

LOCAL_SHARED_LIBRARIES := libexample.so

静态库调用,在Android.mk中添加:

LOCAL_STATIC_LIBRARIES := libexample.a


集成第三方apk,且apk中有jni的so,Android.mk书写如下:

LOCAL_PATH := $(call my-dir)

MY_ABI := armeabi

include $(CLEAR_VARS)
LOCAL_MODULE := example

LOCAL_SRC_FILES := example.apk

LOCAL_PREBUILT_JNI_LIBS := \
    @lib/$(MY_ABI)/libBaiduMap.so \
    @lib/$(MY_ABI)/libWeixin.so 

LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)


上面Android.mk的例子在实际Android的项目中,可以正常使用。





猜你喜欢

转载自blog.csdn.net/croop520/article/details/77915749
今日推荐