阅读此文前你需要掌握:
基础的Android开发知识,创建普通的界面
基础的CMake知识,可以编写简单的CMake工程
创建工程
- 打开AndroidStudio 勾选C++选项
勾选选项
- 添加External Tool
其实Externa Tool我们就是使用了javah:
- Program:$JDKPath$/bin/javah(调用javah)
- Args:-classpath “$Classpath$” -v -jni “$FileClass$”(设置参数)
- Work Directory:$SourcepathEntry$/../jni(设置工作目录)
这样我们就可以通过右键将Jni的.h文件生成到jni文件夹下了。
右键:ExternalTools/javah
文件目录如下:
- src/main/java —— 存放Java源代码
- src/main/jni —— 存放C++源代码
然后我们对CMakeLists进行编写:
Include文件夹在jni下,源代码文件夹也在jni下。
模块名为NDKDemo
如果要使用android库时则加入android-lib
如下:
然后我们编写NDKHelper
我们编写了一个native函数add
并且加载NDKDemo这个库
注意我们需要先对Java进行编译然后再执行javah
我们对Gradle进行调整
添加了NDK以及sourceSets模块。
ndk{
moduleName "NDKDemo"
}
sourceSets {
main{
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
}
指定模块名以及数据源
编写以及编译C++
生成的jni wrapper如上图。
对其进行实现。
最后再主界面使用该函数即可。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout./activity_main/);
// Example of a call to a native method
TextView tv = (TextView) findViewById(R.id./sample_text/);
tv.setText(String./valueOf/(NDKHelper./Instance/.Add(100, 200)));
}
}
工程地址:vgvgvvv/ResetCore