安卓 NDK JNI 使用(五) -- so , jar 包

本文介绍了在安卓开发中如何使用NDK和JNI,包括.so文件的处理、jar包的创建与导入,以及如何使用第三方库。在处理.so文件时,需要注意包名一致或封装为jar包。对于jar包,通过特定命令打包并添加到项目中。在使用第三方库时,需将.so文件放入jniLibs目录,jar包加入到library。在遇到问题时,可能涉及jar包配置、SDK版本匹配等问题。

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

到最后,就是使用自己写的.so,jar包,或者使用第三方提供的接口,下面我们就来聊一聊这方面的问题

环境

  • windous 10
  • JDK : “1.8.0_45”
  • NDK : android-ndk-r10d
  • 编译器:Android studio
  • cygwin64

.so

  • 我们在生成.so文件之后,肯定实在本项目下进行测试了,测试完成之后,肯定又想着新建一个项目进行测试了,测试so是否可以正常,或者是否还需要依赖库等(错误的做法!)。
  • 刚开始使用的时候,肯定已经忽略了了安卓在调用so文件时的过程,也就是说,在加载库的时候,或者链接到库里面的种种的时候,是需要解析到路径的,所以单单地只是拷贝so文件的话,是不可取的。下面有两种方法:

    1. 新建项目的时候,保证包名一致,这样在加载的时候,以保证可行
    2. 封装一个java文件当做接口,打成jar包,这样直接导包即可,参加下面。
  • 可能遇到的问题,说明都是没有正确地调用.so,参考上面那两种方法可以解决:
    1、不能load .so的库
    2、提示找不到native的方法

jar 包

这里写图片描述

  • 我在目录下,找到app/build/intermediates/classes/debug/test 图示如下,我们会看到一个ST.class的文件,接下来我们就把它打包起来。

这里写图片描述

  • 打开cygwin termial,进入目录下,执行命令jar cvf test.jar . 自动生成test.jar的包了,具体命令课参见上面的两条链接,这条命令的意思就是在该目录下的所有文件,打包成名为test的jar包。

这里写图片描述

  • 然后,就可以拷到想要的项目里使用即可。

使用第三方包

使用第三方的包,一般是有一个.so文件和一个jar包。我们把jar包拷到app/libs 里面,右击,选择Add as library 。在app/src/main 下,新建一个jniLibs的文件夹,把.so文件放进去。

然后就可以直接使用了,当调用时,系统会自动导包。想看接口时,可以直接点击左侧的java文件进行查看,或者直接使用第三方提供的文档。

这里写图片描述

  • 可能会遇到的一些问题:
    1、Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException ,可能是jar包的问题,你在删除jar包的时候,可能没有删除配置,也可能你在测试的时候,直接把生成的jar包拷到libs下,生成的那边未删掉。 方法:查看jar包是否还存在项目中,检查build.gradle 中的dependencies是否还引用这jar包。

    2、Failure [INSTALL_FAILED_OLDER_SDK] , 可能不是在引用的时候的错,但是遇到了就贴出来了。方法:检查手机版本,项目的SDK版本,第三方包的minSDK 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值