NDK官网:https://developer.android.google.cn/ndk/index.html

NDK下载地址:https://developer.android.google.cn/ndk/downloads/

NDK in Github: https://github.com/googlesamples/android-ndk

NDK相关文章

1.Android JNI(一)——NDK与JNI基础

    1.2 Android JNI学习(二)——实战JNI之“hello world”

    1.3 Android JNI学习(三)——Java与Native相互调用

    1.4 Android JNI学习(四)——JNI的常用方法的中文API

    1.5 Android JNI学习(五)——Demo演示

 2. Android NDK 从入门到精通(汇总篇)

实际遇到的问题:

开发工具:AndroidStudio3.4.2

CMake版本:3.10.2

Studio插件:NDK(版本:20.0),LLDB,CMake

 1. javah 找不到 类文件

     ① 打开 Terminal,执行 cd D:\workspaces\android\Test\NDKDemo2\app\src\main\java\com\chb\ndkdemo2 进入到java文件所在目录;

     ②执行 javac NDKTools.java,生成NDKTools.class。

     ③(重要)NDKTools.class 不能和NDKTools.java在同一目录下,将 NDKTools.class移动到另一个目录下,比如:D:\workspaces\android\Test\NDKDemo2\app\src\main\class\com\chb\ndkdemo2,其中 com\chb\ndkdemo2 为NDKTools.java 所在的包名对应的路径,不能修改!

     ④ Terminal 切换到 main文件夹(即class文件夹的上一级)下,执行 javah -classpath class com.chb.ndkdemo2.NDKTools   或者 在任意目录下执行     javah  -classpath  D:\workspaces\android\Test\NDKDemo2\app\src\main\class  com.chb.ndkdemo2.NDKTools   ,生成的 com_chb_ndkdemo2_NDKTools.h 文件在执行 javah命令时所在的目录。

     ⑤ 指定 .h文件生成路径,使用javah -d 路径

          如:  javah  -d  D:\workspaces\android\Test\NDKDemo2\app\src\main\jni -classpath  D:\workspaces\android\Test\NDKDemo2\app\src\main\class  com.chb.ndkdemo2.NDKTools 或者  当你在java文件夹目录下,使用 javah  -d  ../jni  -classpath  D:\workspaces\android\Test\NDKDemo2\app\src\main\class  com.chb.ndkdemo2.NDKTools 将在java的上级目录main下面的jni文件夹生成 com_chb_ndkdemo2_NDKTools.h文件,

 Tips:配置javah快捷键:

    配置 Anroid Studio 外部工具,一劳永逸,往后无需命令行,File->Setting->Tools->External Tools->“+”进入页面

 

Program:$JDKPath$\bin\javah.exeArguments:-classpath . -jni -d $ModuleFileDir$\src\main\jni $FileClass$Working directory:$ModuleFileDir$\src\main\Java

注释:
-classpath classes 指明类所在的位置

-jni com.jni.jnitest.JNITest 类的绝对路径

-d 产生的.h文件放到指定目录下;
开始生成.h文件,选中JNI类右键->New->External Tools->javah,如图

 

2. 修改so存放路径

   默认路径为:app\build\intermediates\cmake\debug\obj,按照网上提供的方法:#设置生成的so动态库最后输出的路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../app/src/main/jniLibs/${ANDROID_ABI}),会报错:More than one file was found with OS independent path 'lib/arm64-v8a/libtwo-lib.so  暂时没找到别的办法修改,只能作罢。

3.CMakeList添加子路径 

    

4. 选择编译平台

  可选:arm64-v8a,armeabi-v7a,x86,x86_64

  例如:

  

更多相关文章

  1. Pycharm安装PyQt5的详细教程
  2. NPM 和webpack 的基础使用
  3. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  4. 读取android手机流量信息
  5. android 使用html5作布局文件: webview跟javascript交互
  6. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  7. android“设置”里的版本号
  8. Android开发环境搭建
  9. Android(安卓)Resource介绍和使用

随机推荐

  1. golang怎么判断指针是否为空
  2. Go语言的内存模型介绍
  3. Golang交叉编译简述
  4. golang怎么判断套接字是否关闭
  5. Go语言结构体与初始化图文详解
  6. golang怎么把字符串转成Int类型
  7. golang如何打包
  8. golang判断字符是否存在字符串中
  9. golang用什么编辑器
  10. Golang怎么判断是否为ip