Android NDK 教程 - NDK环境配置和 Android Studio 中的入门使用

本文详细介绍如何在Ubuntu 14.04和Android Studio环境下安装配置Android NDK,并通过实例演示如何使用NDK进行开发,包括配置环境变量、创建JNI文件及编译so库等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的环境: Ubuntu14.04 64bit、Android Studio1.5

Android NDK安装

  下载地址:http://developer.android.com/ndk/downloads/index.html#download

  选择对应的操作系统,然后下载对应文件
  Windows上直接拷到目的目录,双击exe文件即可解压
  Ubuntu上
    ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
    ndk$ ./android-ndk-r10c-darwin-x86_64.bin

  配置环境变量
    Windows
      将ndk根目录加入到Path中,我的ndk根目录 :D:\android-ndk-r10e
    Ubuntu
      在~/.bashrc文件中添加(记得换成自己的ndk根目录):
        NDK_HOME=~/Android/Ndk/android-ndk-r10e
        export PATH=$NDK_HOME:$PATH
    验证(Windows和Ubuntu方法相同)
     在命令行输入ndk-build配置成功显示下图信息:
     这里写图片描述

在Android Studio中的使用

  a)创建工程,并简单编写代码和UI
    创建NativeUtil.java,输入如下内容:
    这里写图片描述
    MainActivity页面如图,点击Click会计算传入字符串的字节数
    这里写图片描述

  b)使用javah命令,进入工程的main目录,使用:javah -d jni -classpath <SDK_android.jar>;<APP_classes> <完整包名>,会在main/jni目录下生成对应.h文件;例如:
    javah -d jni -classpath D:\JAVA_HOME\android-sdk\platforms\android-17\android.jar;../../build/intermediates/classes/debug com.demo.kore.myndk.NativeUtil
      说明:javah最后一个参数的包名对应的是NativeUtil.class文件,不是java文件;其位置如下:
        这里写图片描述
    javah生成的文件:com_demo_kore_myndk_NativeUtil.h 如下图:
    这里写图片描述

  c)在jni目录下创建一个main.c文件,并引用上面生成的.h文件,并实现其中的方法。
    这里写图片描述
  d)app目录结构如下图:
    这里写图片描述
  e)在app目录下的build.gradle文件中的defautlConfig{}标签内添加:
    这里写图片描述
  f)在工程目录下的gradle.properties文件中添加下图内容:
    android.useDeprecatedNdk=true
  g)在工程目录下的local.properties文件中添加ndk本地目录,比如我的本地目录,记得换成自己的ndk目录
    sdk.dir=D:\\JAVA_HOME\\android-sdk
  h)MainActivity中onClick方法,如图,然后点击运行即可
    这里写图片描述
  i)运行结果:
    这里写图片描述

      说明:编译生成so库文件时,需要Android.mk文件,该文件由AS自动生成,其位置如下:
        这里写图片描述

NDK中日志打印 - Log

  a)需要在main.c文件头部中增加部分信息
    这里写图片描述
  b)在app目录下的build.gradle文件中的ndk标签添加如下内容
    这里写图片描述
  c)在main.c文件的方法中调用方法,然后运行即可
    这里写图片描述

遇见错误

  错误一:错误如下,解决方法:在gradle.properties中添:android.useDeprecatedNdk=true

Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set “android.useDeprecatedNdk=true” in gradle.properties to continue using the current NDK integration.

  错误二:错误如下,解决方法:在local.properties中添加本地ndk路径,例如:sdk.dir=D:\\JAVA_HOME\\android-sdk

    这里写图片描述

参考链接:

  ndk入门教程:http://jingyan.baidu.com/article/37bce2be191ed51003f3a278.html
  ndk工程配置:http://blog.youkuaiyun.com/sodino/article/details/41946607
  Android中NDK开发:http://blog.chinaunix.net/uid-12845622-id-5037887.html
  Oracle官方jni文档:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html
  测试插件网址:http://tools.android.com/tech-docs/new-build-system/gradle-experimental

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值