Ubunu下搭建android NDK环境

为何要用到NDK?

概括来说主要分为以下几种情况:

    1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。

    2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。

    3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。

下面就介绍下Android NDK的入门学习过程:

入门的最好办法就是学习Android自带的例子, 这里就通过学习Android的NDK自带的demo程序:hello-jni来达到这个目的。

    android的NDK开发需要在linux下进行: 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。
    安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库
    android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。

1,下载NDK:地址:
http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip

2,解压:
sudo apt-get install unzip
unzip android-ndk-r4b-linux-x86.zip

3,进入目录,查看个文档
cd android-ndk-r4b
其中有build,doc,samples,sources目录,doc目录下放着一些说明文件,比如如何使用ndk-build(这在以前的版本中是通过执行build/host-setup.sh初始化,然后执行make APP = xxxx (此处为hello-jni)来完成编译的)。ANDROID-MK.TXT说明了如何书写mk文件,还有其它帮助文档。

4.需要配置NDK环境变量,在~/.bashrc文件末尾添加:
    NDK=~/android-ndk-r4b
    export NDK
5.查看是否生效
echo $NDK

6,编译示例程序:
方法一:
cd samles/hello-jni
$NDK/ndk-build
方法二:
$NDK/ndk-build -C ~/android-ndk-r4b/samles/hello-jni
-C指定工程目录路径
编译成功会显示
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so
*******************两种方法都会在当前目录下生成libs和obj子目录

7,打开eclipse,新建一个android工程,注意:此处不要“新建”工程,而是从已有源中创建工程(create project from existing source);注意sdk的版本level要符合该示例程序的最低要求(此处为min 3)

8,创建工程完毕,打开jni目录下的hello-jni.c可以修改其中的字符串,我修改为“Gaga, I 'm developing android!”,然后回到命令行,重新执行NDK/ndk-build命令,即重新编译项目,再回到eclipse,刷新整个项目;

9,新建一个模拟器(1.5),然后运行该示例程序,即可看到刚才更改后的字符串出现在模拟器的textview中。

附录:android NDK官方下载地址:
Android NDK r5
Windows
http://dl.google.com/android/ndk/android-ndk-r5-windows.zip
Mac OS X (intel) r5
http://dl.google.com/android/ndk/android-ndk-r5-darwin-x86.tar.bz2
Linux 32/64-bit (x86) r5
http://dl.google.com/android/ndk/android-ndk-r5-linux-x86.tar.bz2

你可能感兴趣的:(eclipse,android,linux,jni,文档,程序开发)