android studio ndk 书籍,NDK 在AndroidStudio3.2.1版本集成方法(ndk-build方式)
在 java 类里写个native方法 public class Java2CJNI {
public native String java2C();
}
复制代码
javah 生成jni样式的标准头文件
切换到 src/main/java 目录下执行 javah -d ../jni ndkold.study.com.ndkolddemo.Java2CJNI
复制代码
-d ../jni 指定输出路径为:当前目录的父目录下的jni目录 ndkold.study.com.ndkolddemo.Java2CJNI这是包含native方法的那个类
3.执行完后生成了jni目录及头文件
这个就是java与native方法进行交互的接口
创建实现头文件的.C源文件 接下来要写个c代码,实现这个jni接口
//引入刚才生成的头文件
#include "ndkold_study_com_ndkolddemo_Java2CJNI.h"
//复制头文件里的要实现的方法名及其参数
JNIEXPORT jstring JNICALL
Java_ndkold_study_com_ndkolddemo_Java2CJNI_java2C(JNIEnv *env, jobject instance) {
// 实现这个方法,返回一个字符串
return env->NewStringUTF("Hello from C++");
}
复制代码
rebuild project 报错
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugNdk'.
> Error: Your project contains C++ files but it is not using a supported native build system.
Consider using CMake or ndk-build integration. For more information, go to:
https://d.android.com/r/studio-ui/add-native-code.html
Alternatively, you can use the experimental plugin:
https://developer.android.com/r/tools/experimental-plugin.html
复制代码
rebuild报错后,复制Android.mk文件
找到Android.mk文件,在build/intermediates/ndk/目录里
复制到这里,jni/
moudle.gralde文件配置
defaultConfig {
...
ndk {
moduleName "Java2C"
//so文件名,如果这里配置了so文件名字,
//记得更改Android.mk里的LOCAL_MODULE :字段为 LOCAL_MODULE := Java2C
abiFilters "armeabi", "armeabi-v7a", "x86" //指定so文件所支持的CPU类型,如果不写的话,会生成所有的CPU类型的so文件
}
}
复制代码
android {
...
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"//指定Android.mk路径
}
}
}
复制代码
再次rebuild
至此生成了libJava2C.so文件
9.调用native方法
public class Java2CJNI {
// 先加载so文件,注意这里的libname是Java2C,不是 libJava2C.so
// 这个libname是Android.mk里的 LOCAL_MODULE := Java2C 字段控制的,注意一定要一致的
static {
System.loadLibrary("Java2C");
}
public native String java2C();
}
复制代码
至此,java通过jni调用C++ 成功了
注意
如果你没成功,很可能是这几处不一致
参考
android studio ndk 书籍,NDK 在AndroidStudio3.2.1版本集成方法(ndk-build方式)相关推荐
- Android Studio中修改项目支持的最小SDK版本的方法
Android Studio的项目支持的最小SDK版本指的是支持该项目运行的最低SDK版本. 1 设置项目支持的最小SDK版本 在创建项目时可以设置该最小SDK的版本,如图1所示. 图1 设置支持的S ...
- 关于android studio中修改图标LOGO时出现的版本问题解决方法
在Android 开发中我们经常遇到要用自己的LOGO,此时需要我们进行对原有的android的图标的修改,我们首先创建一个新的APP项目然后在File->new->Image Asset ...
- android studio 友盟统计,友盟统计 新的集成方法
关于AndroidStudio 友盟集成会非常简单易于控制 1 compile 'com.umeng.analytics:analytics:latest.integration' 2 现在大都是包含 ...
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- Android Studio环境配置安装、搭建详细步骤及使用方法
APP准备工作如下 1.源码下载 因为我已经下载好了 就不演示了 连下载都不会我就不说什么了. 稍后我会随教程发源码出去 jdk-8u77-windows-x64 萝卜app 1.1 mahuaTV这 ...
- 【错误记录】Android Studio 4.2.1 编译报错 ( Kotlin 版本推荐设置 1.5.0 )
文章目录 一.报错信息 二.解决方案 一.报错信息 将 Android Studio 版本升级成最新的 4.2.14.2.14.2.1 版本 , 出现如下错误 ; Build file 'D:\pro ...
- Android Studio Design界面不显示layout控件的解决方法
Android Studio Design界面不显示layout控件的解决方法 参考文章: (1)Android Studio Design界面不显示layout控件的解决方法 (2)https:// ...
- 用Gradle打包出jar文件 前面我们说过,在Android Studio里面使用Gradle来打包应用程序,一般都是build出来一个apk文件。但是有的同学是做实现层的开发,不直接做View层
用Gradle打包出jar文件 前面我们说过,在Android Studio里面使用Gradle来打包应用程序,一般都是build出来一个apk文件.但是有的同学是做实现层的开发,不直接做View层的 ...
- Android studio:Button 按钮英文字符自动大写的解决方法
Android studio:Button 按钮英文字符自动大写的解决方法 一.方法一:styles.xml文件里面添加<item name="textAllCaps"> ...
最新文章
- 低成本测距方案—单目深度估计
- 实时计算Flink——产品安全
- mock平台架构及实现
- mysql change命令_Mysql 操作基本命令大全
- 软件构造学习笔记-第十二周
- 牛客练习赛84F-牛客推荐系统开发之下班【莫比乌斯反演,杜教筛】
- 10 Equality constrained minimization
- Nexus9刷机全纪录
- 单一课和综合课的划分依据_缠论108课第105课:股票的操作中远离小聪明,保持机械性的操作...
- package--math
- 你的烂代码终于有了解决方案
- 微搭低代码入门教程04
- matlab卡方拟合优度检验,卡方拟合优度检验在教学中的应用及Matlab实现_刘泽显...
- 网络限速软件测试大乐,宽带测速谁靠谱?网速测试软件大对比
- C语言 “水仙花数”(包懂)
- 使vue组件居中、中下
- 数据库中间件 MyCAT源码分析 —— XA分布式事务
- 使用cookie防止恶意点击
- 计算机绘图专业,计算机绘图与设计专业
- androidapp打开微信小程序