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 开发相关推荐

  1. JNI编程基础(二)——Android Studio NDK开发

    由于笔者目前的工作是Android开发,所以在JNI开发系列博客中穿插一篇AndroidStudio NDK开发介绍. 随着Android Studio 2.2的推出,Android Studio的N ...

  2. Android Studio NDK 开发配置

    一:使用gradle experimental plugin 首先,我们不能用android studio默认的gradle插件,我们需要把android studio的插件改为gradle expe ...

  3. Android Studio NDK开发

    以前接触过NDK的开发,是在Eclipse环境下开发的.今天尝试了下用Android Studio来配置,结果真是处处都是坑,现在总结一下: 一.步骤 1. 首先创建MainActivity,添加na ...

  4. android studio 和gcc,Android Studio NDK开发总结

    一,gcc.make.makefile.cmake.cmakelists区别 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多 ...

  5. Andorid Studio NDK 开发 - Hello World

    原址 介绍了在Android Studio中配置NDK的开发环境:Android Studio NDK开发-环境配置,NDK开发环境配置完成之后,就要写一下著名的Hello World程序了. 在开始 ...

  6. lldb硬件断点android,Andorid Studio NDK开发-LLDB调试

    LLDB是一个高效的c/c++的调试器,是与LLVM编译器一起使用,提供了丰富的流程控制和数据检测,有效的帮忙我们调试程序.LLDB也已经取代GDB成为XCode的默认调试器,Android Stud ...

  7. Android Studio ndk-Jni开发详细

    2019独角兽企业重金招聘Python工程师标准>>> Android Studio ndk-Jni开发详细入门,Aes加密demo 字数920 阅读13 评论0 喜欢0 Java ...

  8. Android Studio NDK环境配置及JNI使用方法

    1.前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.N ...

  9. android studio ndk HelloWorld 编译环境搭建

    android studio NDK helloworld 项目 第一步 android studio ndk 编译环境搭建 http://yunpan.cn/c3cCxxgwrqDaL 访问密码 6 ...

最新文章

  1. 初创企业股权架构_初创企业如何以每月不到200美元的价格利用生产级基础架构...
  2. 《精通Nginx》——2.3 使用include文件
  3. 气象各种资料汇总(持续更新ing)
  4. 源码学习【HashMap第一篇】HashMap到底是怎么put的?
  5. sql 之as(Aliases)别名(mysql)
  6. 如何提升python编程能力_Python编程小白如何提升自己的编程能力
  7. php中Session的生成机制、回收机制和存储机制探究
  8. sqlsever无法重新启动计算机,SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案...
  9. Redis info信息(转载)
  10. java打开exe程序
  11. python图片马赛克_Python实现PS滤镜中马赛克效果示例
  12. 流程管理无效的几个判定标准?
  13. python查看方法作用_python中有帮助函数吗
  14. 聊聊spring for kafka对consumer的封装与集成 1
  15. 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
  16. Log4j自定义日志级别
  17. photoshop cc2019快捷键
  18. 《神奇的数学》读后感_《奇妙的数学王国》读后感 300字
  19. 理解 Web 3 —— 用户控制的互联网
  20. ubuntu 防火墙端口设置

热门文章

  1. 为什么选择drupal?为什么做贡献?怎么学?怎么贡献?
  2. phpexcel操作
  3. php批号管理,批号_序列号编码规则
  4. 闪烁之光符文 的搭配方法,怎么搭配
  5. 计网_课堂与复习笔记:第三章数据链路层
  6. MySQL详解(四)——高级 2.0
  7. Python使用py2exe打包exe程序
  8. Android设备的电池续航时间优化(Optimizing Battery Life)
  9. 店铺权重、新手必备提升权重方法 如何提高店铺权重
  10. CF626E Simple Skewness