Android Studio JNI开发(1)------CMake编译原生库

一、新建项目勾选上这个 include C++ Support,项目工程会自动在App.bundle中添加这个代码和这个文件CMakeLists.txt,直接运行就能看到加载C++的native方法
  1. defaultConfig {
  2. applicationId "com.iteast.jnitest"
  3. minSdkVersion 15
  4. targetSdkVersion 25
  5. versionCode 1
  6. versionName "1.0"
  7. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  8. externalNativeBuild {
  9. cmake {
  10. cppFlags ""
  11. abiFilters "x86"//这个可以省略,省略后就会生成所有类型的动态库文件
  12. }
  13. }
  14. }
  15. buildTypes {
  16. release {
  17. minifyEnabled false
  18. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  19. }
  20. }
  21. externalNativeBuild {
  22. cmake {
  23. path "CMakeLists.txt"
  24. }
  25. }




二、如果工程中途加入native方法,走如下步骤
  1. 打开一个项目,从菜单栏中选择 Tools > Android > SDK Manager 

  2. 点击 SDK Tools 选项卡。

  3. 勾选 LLDB,CMake  NDK 。如图一:

  4. 创建本地方法

    1. /**
    2. * A native method that is implemented by the 'test_jni' native library,
    3. * which is packaged with this application.
    4. */
    5. public native String stringFromJNI();
    6. // Used to load the 'native-lib' library on application startup.
    7. static {
    8. System.loadLibrary("test_jni");
    9. }

  5. 使用javah生成头文件(如果会直接写头文件,没有必要使用javah),注意Android Studio项目,Terminal需要定位到程序包目录(即src\java目录下如图二)
  6. main目录下新建一个JNI Folder,如图三
  7. 在jni文件中写C\C++代码
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #include<jni.h>
    4. jstring Java_com_iteast_jnitest_MainActivity_stringFromJNI(JNIEnv* env,jobject obj){
    5. char* text = "哈哈哈,今天研究了一下JNI!!!";
    6. return (**env).NewStringUTF(env,text);
    7. }

  8. 运行项目即可执行C\C++方法
  9. so文件生成地方,如图四,如果使用so文件,请在main目录下,创建与java目录平级的jniLibs目录,把相应的so文件放入里面





 
 
 项目地址:点击下载源码
 
 
 
 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章