android 如何编译.so,Android源码中编译自己的so库

本文详细解读Android.mk文件中如何声明并编译JNI共享库libjnicall,涉及JNI模块的构建过程,以及so库的两阶段编译,包括静态库与JNI结合生成libjnicall.so。重点在jni目录结构和相关技术细节。

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

1.2 Android.mk编写

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := HelloWorld

LOCAL_JNI_SHARED_LIBRARIES := libjnicall

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

include $(LOCAL_PATH)/jni/Android.mk

代码06行:声明程序所需要的JNI共享库libjnicall;

代码09行:编译JNI模块,生成libjnicall.so。

2 .so库的编译

在本例中,so库的编译分为两部分,第一部分实现核心功能:加法运行,并打包为二进制静态库(static library);第二部分将静态库及JNI代码编译为.so库libjnicall.so。这两部分代码全部存放在jni目录中,如下所示:

d5e9cfd27a0241756e7f23d7c8bdf6c6.png

图3 jni目录中的内容0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值