android 通过Android.mk将三方的so库编译到apk里

本文介绍如何通过两种不同的Android.mk文件写法,将第三方的SO库编译并嵌入到Android应用的APK包中。第一种方法较为简单,通过预编译的方式直接指定SO库的位置;第二种方法则通过构建预编译模块来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了好多没有一个能解决此问题,于是自己分析其原理自己写了一个Android.mk文件。通过实验可以将三方的os库编译到apk包里,编译完生成的apk包你打开会看到有个libs目录,so库就放在libs/armeabi目录下,下面是Android.mk文件的写法

写法一:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)  
   
LOCAL_PREBUILT_LIBS :=libtest:libs/armeabi/libtest.so  
LOCAL_MODULE_TAGS := eng  
include $(BUILD_MULTI_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_CERTIFICATE := platform
LOCAL_PACKAGE_NAME := test
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_JNI_SHARED_LIBRARIES := libtest
include $(BUILD_PACKAGE)

写法二:

include $(CLEAR_VARS)
LOCAL_MODULE := libtest.
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_SRC_FILES := libs/armeabi/$(LOCAL_MODULE)
OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_CERTIFICATE := platform
LOCAL_PACKAGE_NAME := test
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_JNI_SHARED_LIBRARIES := libtest
include $(BUILD_PACKAGE)

两种方法都可以实现将三方的so库编译到apk包里,第一种方法要简单些。


评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值