到最后,就是使用自己写的.so,jar包,或者使用第三方提供的接口,下面我们就来聊一聊这方面的问题
刚开始使用的时候,肯定已经忽略了了安卓在调用so文件时的过程,也就是说,在加载库的时候,或者链接到库里面的种种的时候,是需要解析到路径的,所以单单地只是拷贝so文件的话,是不可取的。下面有两种方法:
可能遇到的问题,说明都是没有正确地调用.so,参考上面那两种方法可以解决:
1、不能load .so的库
2、提示找不到native的方法
详细可参见 ,我这边用了其中一种方法
http://blog.sina.com.cn/s/blog_93d133c601013hdm.html
http://blog.csdn.net/beijingshi1/article/details/38681281
一般来说,写接口的时候,会在另外一个包里面,我这里新建了一个叫test的包,新建一个ST.java , 用于打包测试。
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 。