Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so

Android Studio3.6 NDK版本21.0.6113669 编译生成第三方.so

写这篇文章主要是再学习Android逆向的过程中,《教我兄弟学Android逆向06 用AndroidStudio编写第一个so》中文章不是AS3.6环境,就想着自己写一篇好了。
《教我兄弟学Android逆向06 用AndroidStudio编写第一个so》教程链接:https://www.52pojie.cn/thread-706568-1-1.html
顺便说一句,《教我兄弟学Android逆向》系列文章的质量是真的好!

首先:先查看AS中Android SDK中是否安装了如下三项。
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第1张图片
然后,新建Native C++项目:
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第2张图片
会发向出现如下错误:
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第3张图片
这说明我们没有配置好NDK,下面我们把NDK配置好:
打开Project Structure,配置NDK:
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第4张图片
之后就会发现,报错没有了,那么我们接下来进行so的编写环节了。
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第5张图片
发现已经将程序结构生成好了,在MainActivity中载入native-libs,还引用了其中的stringFromJNI()方法。
再看看native-lib.cpp:
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第6张图片
emmmmm…,发现已经写好了,根本不像原来版本那么麻烦,既不需要javah来生成 . h .h .h文件头,也不用javac来编译 . c l a s s .class .class文件,直接点击运行,就直接可以在手机上安装运行了。

那么现在按照《教我兄弟学Android逆向06 用AndroidStudio编写第一个so》的文章来一遍,看看又哪些地方可以修修改改的。
先声明一个myJNI方法:
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第7张图片
然后配置javah,具体可以见https://blog.csdn.net/honjane/article/details/52896204
下面的这一步可以不用javac,直接javah
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第8张图片
然后将生成的 . h 文 件 .h文件 .h挪到cpp文件夹中,并将cpp文件夹中native-lib删除,添加main.cpp
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第9张图片
这里需要注意,由于cpp的JNIEnv是经过封装的,所以
在c中的 (*env)->NewStringUTF( “HEllO,WORLD”);
在cpp中应该是 env->NewStringUTF( “HEllO,WORLD”);
具体区别可以参见源码,直接Ctrl+B或者参见:
《JNI完全指南(十)——JavaVM与JNIEnv》
https://www.jianshu.com/p/b1af53fefbd1

然后修改CMakeLists.txt
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第10张图片
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第11张图片
点击Sync就可发现原来的报错的地方消失了
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第12张图片
之后就可以build项目了
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第13张图片
然后app\build\intermediates\cmake\debug\obj\中找到.so文件,将编译好的文件复制到新建的jniLIB文件夹中
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第14张图片
Android Studio 3.6 NDK版本21.0.6113669 编译生成第三方.so_第15张图片
最后,我们点击运行就可以了,就可以发现在手机中显示了我们在so文件中输入的内容。

你可能感兴趣的:(android)