Android Studio中实现NDK开发较之前Eclipse+Cygwin,方便了很多。

本文以最简单的从C程序中获取字符串,并显示到MainActivity的TextView上为例进行NDK开发的基本流程。

准备

NDK开发环境

  在安装好的Android Studio上,在SDK Manager中进行NDK的下载安装;或直接去https://developer.android.com/ndk/downloads/index.html上下载对应的安装包,并解压到sdk的ndk-bundle下。

  设置相关的环境变量,建议将android-v7, v4等工具也添加到环境变量中。

实现步骤

  创建Project

  在app下创建一个名为jni的目录(依次点击:new folder jni-folder)

  在gradle_properties文件中加入:android.useDeprecatedNdk=true

  创建一个类NdkUtil,在其中声明native方法

      public class NdkUitls {
public native String getCLanguageString();
}  

  在terminal中使用命令行,在app\build\intermediates\classes\debug下,使用javah -jni lab.example.NdkUtil[根据实际情况而定]。在该目录下回产生一个.h文件,打开该文件后,复制其中的内容。

  

  

  在app目录下新建一个jni目录(new folder jni-folder),并创建一个C文件,粘贴.h中的内容。并作相应的修改。

  在app module目录下的build.gradle中,找到gradle文件的defaultConfig,添加ndk配置信息
  ndk{
    moduleName "YourJniLibName"
    abiFilters "armeabi", "armeabi-v7a", "x86"
  }

  

  在代码NdkUtil中加载给类库YourniLibName:
    static{
      System.loadLibrary("YourJniLibName");
    }

  编译,运行:

最新文章

  1. java项目导入IntelliJ IDEA
  2. Quartz.NET配置
  3. python - socket - server
  4. Category和Extension
  5. LoadRunner 12试用
  6. Start GitHub
  7. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
  8. 【secureCRT】会话保存的路径
  9. Ubuntu11.10与r8168网卡不兼容导致网络时断时续的问题
  10. 关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用
  11. DataList嵌套绑定例子
  12. werkzeug(flask)中的local,localstack,localproxy探究
  13. js限制字符串长度,超出的部分补...
  14. sql进阶
  15. 安装ruby及sass
  16. 解决Linux服务器tomact-8.0启动慢的问题
  17. DIV垂直居中对齐
  18. jQuery的ajax的post请求json格式无法上传空数组
  19. R语言判断向量中是否存在一个元素
  20. python高级(三)—— 字典和集合(泛映射类型)

热门文章

  1. [转]CTO、技术总监、首席架构师的区别
  2. mysqldump: Got error: 1142: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'accounts' when using LOCK TABLES
  3. ORACLE的SPFILE与PFILE
  4. Ant:build.xml 结构
  5. HDFS开发实例
  6. python 常用模块之os、sys、shutil
  7. MongoDB学习笔记~数据结构与实体对象不一致时,它会怎么样?
  8. linux快速删除海量文件
  9. PostgreSQL-系统表、系统视图
  10. PostgreSQL-function、trigger