前言:最近学习了一下Android里如何配置NDK的环境,因此写篇文章来积累一下学习到的东西!

一.首先要下载我们需要的C/C++工具包,即NDK工具包,大家可以到这个网址下载:http://www.androiddevtools.cn/ ,里面有很多开发工具,建议大家收藏!
1.我下载的NDK为android-ndk-r9d包,如下图所示:

注:此次我配置NDK环境是在windows下,使用Eclipse ADT开发工具来配置的,没用其它的系统和Android Studio工具来配置,请见谅。其它的工具包有的是exe格式的,我还没试过,大家可以尝试一下。
2.解压到我们的开发工具即ADT的目录底下,如下图所示:

二.在完成上面的步骤之后,接下里的步骤都是在Eclipse工具里进行的:
1.首先,打开我们的Eclipse(含有ADT插件的Android开发环境),打开工具栏底下的Window -> Preferences -> Android -> NDK,开始设置我们的NDK路径,设置完后,点击Apply,再点击OK,如下图所示:

2.接下我们新建一个Android项目,项目名为hellojni,并设置包名为com.android.hellojni:
(1).接着,我们选中hellojni项目,点击鼠标右键,弹出的菜单项里,选择Android Tools -> Add Android Native Support,然后给我们的.so文件取名,例如jni-test,这里我们选择默认,点击Finish就行,如下图所示:

(2).此时,项目底下就多出了一个jni的文件夹,jni文件夹下有Android.mk和hellojni.cpp文件。Android.mk是NDK工程的Makefile,hellojni.cpp就为NDK的源文件。此时项目已经创建成功,下面还需为我们这个项目导入到编译环境里去运行,然后开始我们的C语言文件的编写和Android里的Java代码的编写了,编写C语言代码途中有错误,编译器将会报错。

三.为我们上面第二步创建出来的项目导入到编译环境下运行:
在NDKr7开始,谷歌的windows版本NDK提供了一个ndk-build.cmd的脚本,这样就可以直接使用这个脚本编译,不需要cygwin了。
1.首先,选择我们的hellojni项目,点击鼠标右键,在弹出的菜单下选择Properties -> Builders -> New,即新添加一个编译器,点击之后出现添加界面,选择Program,点击OK,如下图所示:

2.出现了添加界面:
(1)首先我们给编译器设置名称,例如NDK_Builder,设置Location为NDK的安装目录下的ndk-build.cmd,设置Working Directory为${workspace_loc:/项目名称},如下图所示:

(2).再切换到Refresh选项卡,为Refresh resources upon completion打上勾,如下图所示:

(3).接着切换到Build Options选项卡,把后面三项复选框选中,打上勾,再点击旁边的Specify Resources…,选择你Android项目中的jni文件夹,点击Finish完成,如下图所示:

(4).上面3步设置完后,点击Apply应用,再点击OK确定即可。
(5).然后,就会在Builders的选项中多出一个NDK_Builder编译器,选中此编译器,点击Up按钮,把新建的编译器置顶,点击OK即可,如下图所示:

(6).然后控制台就会开始编译了,如下图所示:

四.虽然编译开始了并完成了,但是所编译的C语言代码我们还没写呢,所以,开始编写我们的Android项目的里的布局文件代和MainActivity以及C语言的代码,利用C代码和Java代码的结合,来显示一个Hello JNI!的文本内容:
(1).首先,打开Android项目底下的activity_main.xml布局文件,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><TextView android:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

(2).然后开始编写我们的C语言代码,打开jni文件夹下的hellojni.cpp文件,hellojni.cpp代码如下:

#include <string.h>
#include <jni.h>extern "C"{jstring Java_com_android_hellojni_MainActivity_show(JNIEnv* env,jobject thiz){jstring str=env->NewStringUTF("Hello JNI!");return str;}
}

说明:
第一,上面的第一二行代码为导入头文件,其中第二行代码为引入JNI(Java native Interface),需要什么库就导入什么头文件。
第二,其中的方法,必须放置在extern “C”{方法}中,因为所有的java代码要转换为C代码必须要这样,否则将会报如下图的错误:

第三,其中的jstring为Java字符串类型,其中的函数名为Java_com_android_hellojni_MainActivity_show,这个函数的构成为Java_<包名称><类名><函数>,其中该函数的名称和参数要与Android工程中的MainActivity.java文件定义的一致,否则会出错,其中Java的J必须大写,否则也会出错。
第四,最后两行的代码是为jstring类型赋值,并返回。
第五,因为我们在上面已经导入了编译环境,所以你一保存C代码,将会立即编译,如果C代码有错误,也会提示错误。
编译成功后如下图所示:

(3).最后,再编写我们的MainActivity.java文件,代码如下:

package com.android.hellojni;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView textView=(TextView)findViewById(R.id.textView);textView.setText(show());}public static native String show();static {System.loadLibrary("hellojni");}
}

说明:
第一,其中static{System.loadLibrary(“hellojni”);} 表示加载hellojni这个库,其中这个库的名称不能随便乱写,要根据Android.mk文件里的LOCAL_MODULE 的名称来写,否则会出错,如下图所示:

第二,其中的public static native String show();这个静态的方法是调用C代码中的那个show函数。
第三,通过调用show()函数,返回一个字符串,此时的字符串内容就为C程序里的Hello JNI!了。

五.然后部署此项目到Android模拟器上,效果如下:

六.以上内容仅供大家学习参考,写得不好,请见谅,如有错误,请指出,谢谢!

Android学习之NDK环境的配置相关推荐

  1. win8能开发android的sdk么,Win8下Android SDK安装与环境变量配置教程

    Win8下Android SDK的安装与环境变量配置,具体内容如下 1.下载Android SDK,点击安装,直接默认路径即可! 进入该网站后往下拉就能找到sdk下载的位置,选择图中红圈的程序进行下载 ...

  2. android中搭建NDK环境及使用JNI技术

    NDK:Native Development Kit 包括Apis +编译和运行的工具 +文档+ Sample JNI:JAVA Native Interface 功能:JAVA语言调用c/C++语言 ...

  3. Android jni开发--NDK环境搭建

    谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供 ...

  4. Android SDK安装、环境变量配置

    目录 安装sdk步骤 一.下载安装sdk tools 1.打开网址: AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Grad ...

  5. Android Sdk安装和环境变量配置

    Android Sdk安装 Android Sdk环境变量配置 参考:https://blog.csdn.net/qq_21454973/article/details/80429545 一:Andr ...

  6. Intel oneAPI学习笔记之环境变量配置运行一个PyTorch程序

    前面两篇文章: Intel oneAPI学习笔记之基本概念&六大工具包一览 Intel oneAPI 学习笔记之 Centos 下安装 Intel® oneAPI Base Toolkit 和 ...

  7. 关于Android C++的NDK环境搭建(Win7系统)

    搭建环境需要的组件: 1.Java JDK6 2.Apache ANT构建系统 3.Android SDK 4.Cygwin 5.Android NDK 6.Eclipse IDE 第一步:JDK安装 ...

  8. Android学习1——开发环境搭建、Android Studio安装

    一.目的 1.掌握 Android 开发环境搭建方法 2.掌握 Android 项目建立方法 3.掌握 Gitee 账号建立及其使用方法 4.掌握 Android 模拟器使用方法 二.实验环境 1.J ...

  9. OGRE 学习小记 开发环境的配置

    每次配置OGRE的开发环境,总要遇到几个相似的问题,在此记录一下: 1.各种error LNK2019: unresolved external symbol 问题原因:其实VS碰到这种问题无非就是没 ...

最新文章

  1. Rancher upgrade webhook之CI/CD
  2. WCF系列学习笔记4之绑定详解
  3. md5和SHA校验码
  4. 【Python成长之路】从零做网站开发 -- 下拉选择项的实现
  5. 啥?喝着阔落吃着西瓜就把Promise手写出来了???
  6. 四阶龙格库塔法的基本思想_利用龙格库塔法求解质点运动方程
  7. Mac 利用 Chrome 下载所有网页上的视频
  8. 如何获取win10锁屏界面的壁纸
  9. 利用js脚本自动删除微博
  10. python +appium实现原理_Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)...
  11. Win10 tensorflow 1.12 gpu + CUDA10 + Anaconda3-4.4 python3.6 安装过程
  12. Linux基础系统优化及常用命令
  13. 石化能源行业工业互联网智能工厂解决方案
  14. 交互设计师怎样做网页产品的“原型设计”?
  15. 计算机二级的Word知识点,计算机等级考试二级office基础知识点总结.doc
  16. 惠普Z820安装win10系统攻略(固态作为系统盘)——思小瓜
  17. 阿里云服务器esc第一弹,新手教程,过程详细哦
  18. 同程艺龙半年报的喜色,掩盖了旅游竞争的本色
  19. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
  20. 情感分类---未解决

热门文章

  1. Spring AOP源码解析——专治你不会看源码的坏毛病!
  2. 远程过程调用(RPC)
  3. Python随手记—各种方法的使用
  4. Python带参数的装饰器
  5. 20145236《网络对抗》进阶实验——64位Ubuntu 17.10.1 ROP攻击
  6. 【学习记录】Sql中存储过程的
  7. DX10 Shadow Volumn Sample Code的Bug修正
  8. Xcode 4 with External Static Library for iPhone Development
  9. MSDN Visual系列:利用关联来过滤MOSS中的BDC数据
  10. [Vue.js]实战 -- 电商项目(五)