Android Studio NDK 开发
1、SDK Tools下载DNK,如果已经有下载有DNK的开发工具的话,可以直接导入
当然,AS后面推荐使用CMake方式开发NDK,这个后面再说,这里还是先讲ndk+javah+Android.mk的方式方式。
2、配置DNK的环境变量,这样才能在命令工具中方便使用DNK的命令,下面是我配置的环境变量
\SDK\platform-tools;D:\GitDir\Git\cmd;D:\android-ndk-r14b-windows-x86;C:\Program Files\Java\jdk1.8.0_73\binD:\AS_WorkSpace\MyJniDemo2\app\src\main\java>
3、工程的gradle.properties中添加android.deprecatedNdkCompileLease=1558488690642
我之前是添加的android.useDeprecatedNdk=true,会build报错,提示useDeprecatedNdk is no longer supported,表示不支持了。
4、app的gradle里面添加ndk相关的属性配置,这里是制定生成so的名称。
5、编写native方法:
public static native String getStringFromJni();public static native String getStringFromJni(int i);public native void doSomeThings();public native void doSomeThings(String str);
6、在AS自带的命令输入工具中,执行javah命令生成相关的.h头文件。javah -d “目的文件” “源文件”
D:\AS_WorkSpace\MyJniDemo2\app\src\main\java>javah -d ../jni yys.com.myjnidemo.JniDataUtil
这里就是把java文件JniDataUtil.java 生成的头文件放在java同级目录下的jni文件夹中,生成的文件如下:
生成的方法名的命名规则:Java_包名_类名_方法名
7、建立c++源文件 .cpp文件,同时引用刚刚生成的.h头文件,并实现头文件里面声明的方法:
其中我们可以看到,还有一个Android.mk文件,这个文件是Android提供的一个makefile文件,来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库名
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := myjnidemo 动态库的名字
LOCAL_SRC_FILES := DateUtil.cpp 被编译的源文件include $(BUILD_SHARED_LIBRARY)
同时,我们的.so库生成的位置在如下的地方:
8、引用.so动态库,并使用native方法
public class JniDataUtil {static {System.loadLibrary("jnidata"); 引用动态库}public static native String getStringFromJni();public static native String getStringFromJni(int i);public native void doSomeThings();public native void doSomeThings(String str);}
public class MainActivity extends AppCompatActivity {TextView textView ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.text1);textView.setText(JniDataUtil.getStringFromJni());}
}
至此,一个简单的ndk开发流程就完了。
Android Studio NDK 开发相关推荐
- JNI编程基础(二)——Android Studio NDK开发
由于笔者目前的工作是Android开发,所以在JNI开发系列博客中穿插一篇AndroidStudio NDK开发介绍. 随着Android Studio 2.2的推出,Android Studio的N ...
- Android Studio NDK 开发配置
一:使用gradle experimental plugin 首先,我们不能用android studio默认的gradle插件,我们需要把android studio的插件改为gradle expe ...
- Android Studio NDK开发
以前接触过NDK的开发,是在Eclipse环境下开发的.今天尝试了下用Android Studio来配置,结果真是处处都是坑,现在总结一下: 一.步骤 1. 首先创建MainActivity,添加na ...
- android studio 和gcc,Android Studio NDK开发总结
一,gcc.make.makefile.cmake.cmakelists区别 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多 ...
- Andorid Studio NDK 开发 - Hello World
原址 介绍了在Android Studio中配置NDK的开发环境:Android Studio NDK开发-环境配置,NDK开发环境配置完成之后,就要写一下著名的Hello World程序了. 在开始 ...
- lldb硬件断点android,Andorid Studio NDK开发-LLDB调试
LLDB是一个高效的c/c++的调试器,是与LLVM编译器一起使用,提供了丰富的流程控制和数据检测,有效的帮忙我们调试程序.LLDB也已经取代GDB成为XCode的默认调试器,Android Stud ...
- Android Studio ndk-Jni开发详细
2019独角兽企业重金招聘Python工程师标准>>> Android Studio ndk-Jni开发详细入门,Aes加密demo 字数920 阅读13 评论0 喜欢0 Java ...
- Android Studio NDK环境配置及JNI使用方法
1.前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.N ...
- android studio ndk HelloWorld 编译环境搭建
android studio NDK helloworld 项目 第一步 android studio ndk 编译环境搭建 http://yunpan.cn/c3cCxxgwrqDaL 访问密码 6 ...
最新文章
- 初创企业股权架构_初创企业如何以每月不到200美元的价格利用生产级基础架构...
- 《精通Nginx》——2.3 使用include文件
- 气象各种资料汇总(持续更新ing)
- 源码学习【HashMap第一篇】HashMap到底是怎么put的?
- sql 之as(Aliases)别名(mysql)
- 如何提升python编程能力_Python编程小白如何提升自己的编程能力
- php中Session的生成机制、回收机制和存储机制探究
- sqlsever无法重新启动计算机,SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案...
- Redis info信息(转载)
- java打开exe程序
- python图片马赛克_Python实现PS滤镜中马赛克效果示例
- 流程管理无效的几个判定标准?
- python查看方法作用_python中有帮助函数吗
- 聊聊spring for kafka对consumer的封装与集成 1
- 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
- Log4j自定义日志级别
- photoshop cc2019快捷键
- 《神奇的数学》读后感_《奇妙的数学王国》读后感 300字
- 理解 Web 3 —— 用户控制的互联网
- ubuntu 防火墙端口设置