Android(安卓)NDK 学习笔记
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
例如:
更多相关文章
- Pycharm安装PyQt5的详细教程
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- 读取android手机流量信息
- android 使用html5作布局文件: webview跟javascript交互
- Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
- android“设置”里的版本号
- Android开发环境搭建
- Android(安卓)Resource介绍和使用