Android各个版本的NDK官方下载链接

Android各个版本的NDK官方下载链接,第1张

NDK官方网站:https://developer.android.google.cn/ndk/downloads/index.html?hl=zh-cn

Google Android NDK官网

ndk_r14b (March 2017)

Windows 32 位: android-ndk-r14b-windows-x86.zip

SHA1校验:707533928070443eaa7fa37ed337f91c655e02ca708d37c92

Windows 64 位: android-ndk-r14b-windows-x86_64.zip

SHA1校验:769151176a625e8c599bccdb9061b61dcf3d1f1a01071613f

Mac OS X: android-ndk-r14b-darwin-x86_64.zip

SHA1校验:8247050732bf582c43f6da16416e66203d158a6dfaba4277c

Linux 64 位 (x86): android-ndk-r14b-linux-x86_64.zip

SHA1校验:840626594becd161da6ed9a823e25be5c02955d9cbca1dbeb

ndk_r13b (Oct 2016)

Windows 32-bit : android-ndk-r13b-windows-x86.zip

Windows 64-bit: android-ndk-r13b-windows-x86_64.zip

Mac OS X : android-ndk-r13b-darwin-x86_64.zip

Linux: android-ndk-r13b-linux-x86_64.zip

ndk_r13 (Sept 2016)

Windows 32-bit : https://dl.google.com/android/repository/android-ndk-r13-windows-x86.zip

Windows 64-bit : https://dl.google.com/android/repository/android-ndk-r13-windows-x86_64.zip

Mac OS X : https://dl.google.com/android/repository/android-ndk-r13-darwin-x86_64.zip

Linux : https://dl.google.com/android/repository/android-ndk-r13-linux-x86_64.zip

ndk_r12 (June 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r12b-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip

ndk_r11c (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11c-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11c-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11c-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip

ndk_r11b (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11b-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11b-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11b-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11b-linux-x86_64.zip

ndk_r11 (March 2016)

Windows 32-bit : http://dl.google.com/android/repository/android-ndk-r11-windows-x86.zip

Windows 64-bit : http://dl.google.com/android/repository/android-ndk-r11-windows-x86_64.zip

Mac OS X 64-bit : http://dl.google.com/android/repository/android-ndk-r11-darwin-x86_64.zip

Linux 64-bit (x86) : http://dl.google.com/android/repository/android-ndk-r11-linux-x86_64.zip

ndk_r10e(Jan 2015)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10e-darwin-x86_64.bin

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10e-darwin-x86.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin

ndk_r10d(December 2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10d-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10d-windows-x86_64.exe

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10d-darwin-x86_64.bin

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10d-darwin-x86.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin

ndk_r10c(October2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r10c-windows-x86.exe

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r10c-windows-x86_64.exe

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r10c-darwin-x86.bin

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r10c-darwin-x86_64.bin

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86.bin

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86_64.bin

ndk_r10b(September2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk32-r10b-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86_64.tar.bz2

ndk_r10(July2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86_64.tar.bz2

ndk_r9d(March2014)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2

ndk_r9c(December2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9c-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9c-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9c-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9c-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2

ndk_r9b(October 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86_64.tar.bz2

ndk_r9(July 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r9-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r9-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r9-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r9-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2

ndk_r8e(March 2013)

Windows32-bit : http://dl.google.com/android/ndk/android-ndk-r8e-windows-x86.zip

Windows64-bit : http://dl.google.com/android/ndk/android-ndk-r8e-windows-x86_64.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86.tar.bz2

MacOS X 64-bit : http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86.tar.bz2

Linux64-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86_64.tar.bz2

Note :

NDKr8e is the first NDK with 32bit and 64bit releases. The prior ones were all32bit and didn’t have any suffix, so r8b would be:

ndk_r8d(December 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8d-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.tar.bz2

ndk_r8C(November 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8C-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8C-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8C-linux-x86.tar.bz2

ndk_r8b(July 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8b-linux-x86.tar.bz2

ndk_r8(May 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r8-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r8-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r8-linux-x86.tar.bz2

ndk_r7c(April 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7c-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7c-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7c-linux-x86.tar.bz2

ndk_r7b(February 2012)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7b-linux-x86.tar.bz2

ndk_r7(November 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r7-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r7-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r7-linux-x86.tar.bz2

ndk_r6b(August 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r6b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r6b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2

ndk_r6(July 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r6-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r6-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r6-linux-x86.tar.bz2

ndk_r5c(June 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5c-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5c-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2

ndk_r5b(January 2011)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5b-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2

ndk_r5(December 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r5-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r5-darwin-x86.tar.bz2

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r5-linux-x86.tar.bz2

ndk_r4b(June 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r4b-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r4b-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip

ndk_r4(may 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r4-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r4-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r4-linux-x86.zip

ndk_r3(March 2010)

Windows32-bit : https://dl.google.com/android/ndk/android-ndk-r3-windows.zip

MacOS X 32-bit : http://dl.google.com/android/ndk/android-ndk-r3-darwin-x86.zip

Linux32-bit (x86) : http://dl.google.com/android/ndk/android-ndk-r3-linux-x86.zip

1.引言

我们知道,Android系统的底层库由c/c++编写,上层Android应用程序通过Java虚拟机调用底层接口,衔接底层c/c++库与Java应用程序间的接口正是JNI(JavaNative Interface)。本文描述了如何在ubuntu下配置AndroidJNI的开发环境,以及如何编写一个简单的c函数库和JNI接口,并通过编写Java程序调用这些接口,最终运行在模拟器上的过程。

2.环境配置

2.1.安装jdk1.6

(1)从jdk官方网站下载jdk-6u29-linux-i586.bin文件

(2)执行jdk安装文件

[html] view plaincopyprint?

01.$chmod a+x jdk-6u29-linux-i586.bin

02.$jdk-6u29-linux-i586.bin

$chmod a+x jdk-6u29-linux-i586.bin

$jdk-6u29-linux-i586.bin

(3)配置jdk环境变量

[html] view plaincopyprint?

01.$sudo vim /etc/profile

02.#JAVAEVIRENMENT

03.exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29

04.exportJRE_HOME=$JAVA_HOME/jre

05.exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

06.exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

$sudo vim /etc/profile

#JAVAEVIRENMENT

exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29

exportJRE_HOME=$JAVA_HOME/jre

exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存后退出编辑,并重启系统。

(4)验证安装

[html] view plaincopyprint?

01.$java -version

02.javaversion "1.6.0_29"

03.Java(TM)SE Runtime Environment (build 1.6.0_29-b11)

04.JavaHotSpot(TM) Server VM (build 20.4-b02, mixed mode)

05.$javah

06.用法:javah[选项]<类>

07.其中[选项]包括:

08.-help输出此帮助消息并退出

09.-classpath<路径>用于装入类的路径

10.-bootclasspath<路径>用于装入引导类的路径

11.-d<目录>输出目录

12.-o<文件>输出文件(只能使用-d或-o中的一个)

13.-jni生成JNI样式的头文件(默认)

14.-version输出版本信息

15.-verbose启用详细输出

16.-force始终写入输出文件

17.使用全限定名称指定<类>(例

18.如,java.lang.Object)。

$java -version

javaversion "1.6.0_29"

Java(TM)SE Runtime Environment (build 1.6.0_29-b11)

JavaHotSpot(TM) Server VM (build 20.4-b02, mixed mode)

$javah

用法:javah[选项]<类>

其中[选项]包括:

-help输出此帮助消息并退出

-classpath<路径>用于装入类的路径

-bootclasspath<路径>用于装入引导类的路径

-d<目录>输出目录

-o<文件>输出文件(只能使用-d或-o中的一个)

-jni生成JNI样式的头文件(默认)

-version输出版本信息

-verbose启用详细输出

-force始终写入输出文件

使用全限定名称指定<类>(例

如,java.lang.Object)。2.2.安装android应用程序开发环境

ubuntu下安装android应用程序开发环境与windows类似,依次安装好以下软件即可:

(1)Eclipse

(2)ADT

(3)AndroidSDK

与windows下安装唯一不同的一点是,下载这些软件的时候要下载Linux版本的安装包。

安装好以上android应用程序的开发环境后,还可以选择是否需要配置emulator和adb工具的环境变量,以方便在进行JNI开发的时候使用。配置步骤如下:

把emulator所在目录android-sdk-linux/tools以及adb所在目录android-sdk-linux/platform-tools添加到环境变量中,android-sdk-linux指androidsdk安装包android-sdk_rxx-linux的解压目录。

[plain] view plaincopyprint?

01.$sudo vim /etc/profile

02.exportPATH=~/software/android/android-sdk-linux/tools:$PATH

03. exportPATH=~/software/android/android-sdk-linux/platform-tools:$PATH

$sudo vim /etc/profile

exportPATH=~/software/android/android-sdk-linux/tools:$PATH

exportPATH=~/software/android/android-sdk-linux/platform-tools:$PATH

编辑完毕后退出,并重启生效。

2.3.安装NDK

NDK是由android提供的编译android本地代码的一个工具。

(1)从androidndk官网http://developer.android.com/sdk/ndk/index.html下载ndk,目前最新版本为android-ndk-r6b-linux-x86.tar.bz2.

(2)解压ndk到工作目录:

[plain] view plaincopyprint?

01.$tar -xvf android-ndk-r6b-linux-x86.tar.bz2

02.$sudo mv android-ndk-r6b /usr/local/ndk

$tar -xvf android-ndk-r6b-linux-x86.tar.bz2

$sudo mv android-ndk-r6b /usr/local/ndk

(3)设置ndk环境变量

[plain] view plaincopyprint?

01.$sudo vim /etc/profile

02.exportPATH=/usr/local/ndk:$PATH

$sudo vim /etc/profile

exportPATH=/usr/local/ndk:$PATH

编辑完毕后保存退出,并重启生效

(4)验证安装

[plain] view plaincopyprint?

01.$ cd/usr/local/ndk/samples/hello-jni/

02.$ ndk-build

03.Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

04.Gdbsetup : libs/armeabi/gdb.setup

05.Install : libhello-jni.so =>libs/armeabi/libhello-jni.so

$ cd/usr/local/ndk/samples/hello-jni/

$ ndk-build

Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup : libs/armeabi/gdb.setup

Install : libhello-jni.so =>libs/armeabi/libhello-jni.so

3.JNI实现

我们需要定义一个符合JNI接口规范的c/c++接口,这个接口不用太复杂,例如输出一个字符串。接下来,则需要把c/c++接口的代码文件编译成共享库(动态库).so文件,并放到模拟器的相关目录下。最后,启动Java应用程序,就可以看到最终效果了。

3.1.编写Java应用程序代码

(1)启动Eclipse,新建android工程

Project:JNITest

Package:org.tonny.jni

Activity:JNITest

(2)编辑资源文件

编辑res/values/strings.xml文件如下:

编辑res/layout/main.xml文件

我们在主界面上添加了一个EditText控件和一个Button控件。

(3)编辑JNITest.java文件

 

static表示在系统第一次加载类的时候,先执行这一段代码,在这里表示加载动态库libJNITest.so文件。

再看这一段:

[java] view plaincopyprint?

01.privatenativeString GetReply()

privatenativeString GetReply()

native表示这个方法由本地代码定义,需要通过jni接口调用本地c/c++代码。

[java] view plaincopyprint?

01.publicvoidonClick(View arg0) {

02.edtName.setText(reply)

03.}

publicvoidonClick(View arg0) {

edtName.setText(reply)

}

这段代码表示点击按钮后,把native方法的返回的字符串显示到EditText控件。

(4)编译工程,生成.class文件。

3.2.用javah工具生成符合JNI规范的c语言头文件

在终端中,进入android工程所在的bin目录

[plain] view plaincopyprint?

01.$cd ~/project/Android/JNITest/bin

$cd ~/project/Android/JNITest/bin

我们用ls命令查看,可以看到bin目录下有个classes目录,其目录结构为classes/org/tonny/jni,即classes的子目录结构是android工程的包名org.tonny.jni。请注意,下面我们准备执行javah命令的时候,必须进入到org/tonny/jni的上级目录,即classes目录,否则javah会提示找不到相关的java类。

下面继续:

[plain] view plaincopyprint?

01.$cd classes

02.$javah org.tonny.jni.JNITest

03.$ls

04.org org_tonny_jni_JNITest.h

$cd classes

$javah org.tonny.jni.JNITest

$ls

org org_tonny_jni_JNITest.h

执行javahorg.tonny.jni.JNITest命令,在classes目录下会生成org_tonny_jni_JNITest.h头文件。如果不进入到classes目录下的话,也可以这样:

[plain] view plaincopyprint?

01.$javah -classpath ~/project/Android/JNITest/bin/classesorg.tonny.jni.JNITest

$javah -classpath ~/project/Android/JNITest/bin/classesorg.tonny.jni.JNITest

-classpath 参数表示装载类的目录。

3.3.编写c/c++代码

生成org_tonny_jni_JNITest.h头文件后,我们就可以编写相应的函数代码了。下面在android工程目录下新建jni目录,即~/project/Android/JNITest/jni,把org_tonny_jni_JNITest.h头文件拷贝到jni目录下,并在jni目录下新建org_tonny_jni_JNITest.c文件,编辑代码如下:

[cpp] view plaincopyprint?

01.#include<jni.h>

02.#include<string.h>

03.#include"org_tonny_jni_JNITest.h"

04.

05.

06.JNIEXPORTjstring JNICALLJava_org_tonny_jni_JNITest_GetReply

07.(JNIEnv *env, jobject obj){

08.return(*env)->NewStringUTF(env,(char*)"Hello,JNITest")

09.}

#include<jni.h>

#include<string.h>

#include"org_tonny_jni_JNITest.h"

JNIEXPORTjstring JNICALLJava_org_tonny_jni_JNITest_GetReply

(JNIEnv *env, jobject obj){

return(*env)->NewStringUTF(env,(char*)"Hello,JNITest")

}

我们可以看到,该函数的实现相当简单,返回一个字符串为:"Hello,JNITest"

3.4.编写Android.mk文件

在~/project/Android/JNITest/jni目录下新建Android.mk文件,android可以根据这个文件的编译参数编译模块。编辑Android.mk文件如下:

[plain] view plaincopyprint?

01.LOCAL_PATH:= $(call my-dir)

02.include$(CLEAR_VARS)

03.LOCAL_MODULE := libJNITest

04.LOCAL_SRC_FILES:= org_tonny_jni_JNITest.c

05.include$(BUILD_SHARED_LIBRARY)

LOCAL_PATH:= $(call my-dir)

include$(CLEAR_VARS)

LOCAL_MODULE := libJNITest

LOCAL_SRC_FILES:= org_tonny_jni_JNITest.c

include$(BUILD_SHARED_LIBRARY)

LOCAL_MODULE表示编译的动态库名称

LOCAL_SRC_FILES 表示源代码文件

3.5.用ndk工具编译并生成.so文件

进入到JNITest的工程目录,执行ndk-build命令即可生成libJNITest.so文件。

[plain] view plaincopyprint?

01.$cd ~/project/Android/JNITest/

02.$ndk-build

03.Invalidattribute name:

04.package

05.Install : libJNITest.so =>libs/armeabi/libJNITest.so

$cd ~/project/Android/JNITest/

$ndk-build

Invalidattribute name:

package

Install : libJNITest.so =>libs/armeabi/libJNITest.so

可以看到,在工程目录的libs/armeabi目录下生成了libJNITest.so文件。

3.6.在模拟器上运行

(1)首先,我们把android模拟器启动起来。进入到emulator所在目录,执行emulator命令:

[plain] view plaincopyprint?

01.$cd ~/software/android/android-sdk-linux/tools

02.$./emulator @AVD-2.3.3-V10 -partition-size 512

$cd ~/software/android/android-sdk-linux/tools

$./emulator @AVD-2.3.3-V10 -partition-size 512

AVD-2.3.3-V10表示你的模拟器名称,与在Eclipse->AVDManager下的AVDName对应,-partition-size表示模拟器的存储设备容量。

(2)接下来,我们需要把libJNITest.so文件拷贝到模拟器的/system/lib目录下,执行以下命令:

[plain] view plaincopyprint?

01.$cd ~/project/Android/JNITest/libs/armeabi/

02.$adb remount

03.$adb push libJNITest.so /system/lib

04.80 KB/s (10084 bytes in 0.121s)

$cd ~/project/Android/JNITest/libs/armeabi/

$adb remount

$adb push libJNITest.so /system/lib

80 KB/s (10084 bytes in 0.121s)

当在终端上看到有80 KB/s (10084 bytes in 0.121s)传输速度等信息的时候,说明拷贝成功。

(3)在终端上执行JNITest程序,这个我们可以在Eclipse下,右键点击JNITest工程,RunAs->Android Application,即可在模拟器上启动程序

1 搭建Android SDK开发环境

2 下载NDK开发包

3打开官网: 下载NDK 开发包,当前最新版本是r7b

下载解压到 ~/bin 目录下,

3 配置NDK环境参数

打开 ~/.bashrc文件:

在文件最后一行添加一行如下指令:

4保存关闭.

这样配置后,以后就可以很方便地使用NDK包中所包含的工具了。

接下来测试一下.打开终端输入如下指令:

如果出现如下显示,就表示可以了.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7526776.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存