Android提取so文件并使用

Android提取so文件并使用,第1张

参考 http://billhoo.blog.51cto.com/2337751/1125559

在 http://www.jianshu.com/p/5bebc6dfbdec

这篇文章中中裤征程的apk:JniTest.apk把后缀改为JnitTest.zip,打开这个文件,在lib下面会有生成好的.so文件,copy出来。

可以发蚂如现这个.so文件叫libMyTest.so。

然后把这个so文件copy到新的项目的libs\armeabi下,使用和正常的.so文件一样。然后修改app的gradle中的android节点中加入:

然后在main\java 建立生成.so文件那个项目的包名, 把NdkJniUtils文件copy过来。当然封装成jar包更好啦。

到此完成,调用NdkJniUtils的方法卖物简即可获得.so文件中的内容。

安卓手机打开.so文件需要下载汪碧握Native Libs Monitor这个app,这个应用可以帮助我们理解手机上安装的APK用到了哪些.so文件,以及.so文件来源于哪些函数库或者框架。我们也可以自己对app反编译来获取这些信息。

so文件是手机的一些运行库文件,在系统lib的文件夹下,置换移植其他系统的程序也需要修改更换相关so文件;没有它系统软件不能运行,哪部分损慧伍坏就影响相对功能,电话接打,通讯录,相机等等都是要依赖so文件使用的。so文件需要资深安卓大师更改,一般都是现成的搬运移植,打开它没有什么意义。安卓手机想要查看.so文件就需要下载Native Libs Monitor。

so是shared object的缩写,见名思义就是共享的对象,机器可以直接运行的二进制代码。大到 *** 作系统,小到一个专用软件,都离不开so。so主要存在于Unix和Linux系统中。so是与平台相关的二进制机器码,Android应用支持的cpu架构取决于APK中位于lib或jniLib目录中的.so文件。

由于Android基于Linux Kernl的,也继承了Linux中所有so相关的设计。

除了系统方面的原因,Android开发者还要知道以下几点:

so机制让开发者最大化利用已有的C和C++代码,达到重用的效果,利用软件世界积累了几十年的优秀代码。

so是二进制困庆,没有解释编译的开消,用so实现的功能比纯java实现的功能要快。

so内存分配不受Dalivik/ART的单个应用限制,减少OOM。

android ndk调用第三方的so库文件的步骤如下:

1.将SO文件直接放到libs/armeabi下,然后代码中System.loadLibrary("xxx");再public native static int xxx_xxx_xxx();接下来就可局旅改以直接调用xxx_xxx_xxx()方法;

2.第二镇余种方案,创建自己的SO文件,在自己的SO文件里调用第三方SO,再在程序中调用自己的SO,这种比较复杂,需要建java类文件,生成.h文件,编写桐判C源文件include之前生成的.h文件并实现相应方法,最后用android NDK开发包中的ndk-build脚本生成对应的.so共享库;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8162149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存