android .a ndk,导入现有的c库(.a或.so文件)ndk android

本文介绍了如何在Android应用中直接使用预编译的.so库文件,避免处理NDK、CMake和.mk文件的复杂性。只需将.so文件放入libs目录,并更新build.gradle配置。同时,解释了如何在Java代码中声明和调用原生方法,以及系统如何加载和链接库。
摘要由CSDN通过智能技术生成

好的,所以你有很多问题.其中一些问题是个人偏好类型,但我会将它们作为我个人的选择.

1

这是你的选择.我个人会使用已编译的.so文件.这样我就不必担心NDK和CMake和.mk文件了.如果您有该文件,您只需将该文件添加到libs文件夹(而不是lib文件夹)并对build.gradle文件进行微小更改.而已.

更改为build.gradle:

sourceSets {

main {

manifest.srcFile 'AndroidManifest.xml'

java.srcDirs = ['src']

res.srcDirs = ['res']

assets.srcDirs = ['assets']

jniLibs.srcDirs = ['libs']

}

}

2& 3

这些与此选项无关.

4

无论您使用文件还是编译库,都必须执行此类操作:

@SuppressWarnings("JniMissingFunction")

public class MyNativeMethods {

static {

System.loadLibrary("my_native_lib");

}

public native int native_method_1(int fd);

public native int native_method_2(int fd);

public native void native_method_3(int fd, int arr[]);

public native int[] native_method_4(int fd);

}

然后,您可以从Activity / Fragment中调用这些方法.

希望这很清楚.

编辑(根据下面的评论):

1).so或.a文件是您的本机库.

2).cpp,.c等文件只是您的本机源代码文件.如果要在项目中使用这些文件,则必须使用构建系统(例如,CMake)来使用它们. CMake将获取您的源代码文件并创建一个.so库,这也是本机库.这就是我建议使用.so文件的原因,因为为什么在你不需要时在项目中实现CMake的工作呢?

3)System.loadLibrary(“my_native_lib”);:在这里,您要告诉Java运行时添加此给定的库.这样,您就可以在Java和库中的C代码之间创建链接.该行下面的方法应该与它们在C/C++代码中的名称相同.这样,Java运行时将找到并打开库,并在您加载的库中查找这些方法.查看更多here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值