新建的ndk工程,什么都不用做,直接点击run就可以编译并运行,下图就是直接run的结果
接下来我们看看,run的时候都发生什么了。
1.Gradle 调用您的外部构建脚本 CMakeLists.txt
2.CMake 按照构建脚本中的命令将 C++ 源文件 native-lib.cpp 编译到共享的对象库中,并命名为 libnative-lib.so,Gradle 随后会将其封装到 APK 中,你可以验证一下,把app/build/outputs/apk/ 目录中的apk拖到编辑区,看它的libs文件夹
3.运行时,应用的 MainActivity会使用 **System.loadLibrary() **加载原生库。现在,应用可以使用库的原生函数 stringFromJNI()。
源码为:
...
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
...
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
4.MainActivity.onCreate() 调用 stringFromJNI()
,这将返回“Hello from C++”并使用这些文字更新 TextView
源码为:
// Example of a call to a native method
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
==========================================================
eclipse时代玩过ndk,现在studio时代,应该是大同小异,使用各自的工具,遵守各自的规则即可;参照官网,进行提炼,总结,学习计划如下(本系列只关注cmake,如需学习ndk-build,请自行查阅其他资料):
jni相关,未完待续...
官网参考链接
https://developer.android.google.cn/studio/projects/add-native-code.html