二进制文件基本没法修改的,除非有它的源代码,修改以后,重新编译。
当然,so可以在一定程度上反编译,但是很麻烦。
参考 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文件中的内容。
APP开发时,可能会碰到引入第三方so文件的需求,可以根据以下步骤引入
一、新建jnilibs目录,或者直接放入libs目录
二、修改build.gradle文件,添加sourceSets jniLibs.srcDirs配置,如果放入libs,那么srcDirs应配置为libs
前两步已经说明如何引入so文件,那么如何调用.so文件里面的方法呢?拷贝或新建调用类,注意包名,在类中创建相应方法,假设C文件的方法为Java_a_b_c_JniUtils_test,需创建的类及方法:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)