Android NDK Jni学习使用(一)

2022-04-22  本文已影响0人  程序元客栈
jni 编译三种方法
1. 创建工程
创建项目.png
2. 配置项目
3. 文件结构
4.分析
1.png
extern "C" JNIEXPORT jstring JNICALL
Java_com_zyj_jnidemo_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}
4.1. 函数分析
4.1.1 在MainActivity 中使用 :(包名是com.zyj.jnidemo)
      static {
          System.loadLibrary("native-lib");
       }
      public native String stringFromJNI();
     通过stringFromJNI 获取
4.2. extern "C" 避免编译器按照C++方法编译C函数
4.3. JNIEXPORT 函数可以被其他函数调用
4.4. jstring 返回类型
4.5.设置CMakeLists.txt 生成的so文件路径:
结果展示.png
      # set(原路径, 目标路径, 生成哪些平台对于的库文件)
      # 参数分析
      # CMAKE_CURRENT_SOURCE_DIR: 这个是cmake的库的原路径
      # /../jniLibs: 这个是指与CMakeList.txt 所在目录的同一级目录
      # ANDROID_ABI:生成哪些平台对应的库文件
      set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
4.6. 生成指定arm文件
 defaultConfig { 
     externalNativeBuild {
         cmake {
             cppFlags "-std=c++11"
             abiFilters "armeabi-v7a"    // 指定只生成armeabi-v7a
         }
     }
 }
上一篇 下一篇

猜你喜欢

热点阅读