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

ᴛʜᴇᴘᴀᴛᴇʟ..

16

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

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运行时将找到并打开库,并在您加载的库中查找这些方法.在这里查看更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值