Android NDK 是运行于Android 平台上的Native Development Kit 的缩写。Android 应用开发者可以通过NDK 调用C 或C++ 本地代码。
NDK的作用:
- 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
- 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。
- 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。
下面是NDK的安装配置过程。
环境:Ubuntu10.10(NDK只能在Linux下安装) 已安装好Android开发环境。
1.下载
国内无法访问到google的相关页面,但可以直接通过下面的地址下载。
http://dl.google.com/android/ndk/android-ndk-r8b-linux-x86.tar.bz2
下载地址:http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html
2.解压
个人习惯把东西放在 /usr/local/lib文件夹下面。
要用到的命令:
//复制文件
cp android-ndk-r8b-linux-x86.tar.bz2 /usr/local/lib
//解压文件
tar jxvf android-ndk-r8b-linux-x86.tar.bz2
//修改权限
chmod 777 android-ndk-r8b -R
3.修改环境变量
终端运行:gedit ~/.bashrc
将下面的语句加入
#NDK
setting
NDK_ROOT=/usr/local/lib/android-ndk-r8b
export NDK_ROOT
保存,终端运行:source ~/.bashrc
使之立即生效。
在终端运行:echo $NDK_ROOT
若正确打印了NDK的路径,说明环境变量修改成功。
4.测试
cd 进入android-ndk-r8b/samples/hello-jni,然后在终端运行ndk的编译脚本:
sudo
/usr/local/lib/android-ndk-r8b/ndk-build
若结果如下图,则ndk安装成功。
./configure --prefix=/zwjinfo/ffmpeg/dist --enable-cross-compile --enable-static --enable-shared --enable-gpl --disable-encoders
--disable-muxers --disable-filters --arch=arm --cpu=armv7-a
--enable-memalign-hack --disable-symver --enable-asm --enable-neon --cross-prefix=/zwjinfo/ndkr10/android-ndk-r10/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
--sysroot=/zwjinfo/ndkr10/android-ndk-r10/platforms/android-L/arch-arm --sysinclude=/zwjinfo/ndkr10/android-ndk-r10/platforms/android-L/arch-arm --disable-debug --target-os=linux --extra-cflags=‘-mfloat-abi=softfp -O3 -mfpu=vfpv3-d16 -marm -mthumb‘ --disable-doc
--disable-yasm --enable-pic --enable-small --enable-hardcoded-tables --extra-ldflags=‘-Wl,--fix-cortex-a8 -mthumb‘-march=armv7-a -mfpu=vfpv3-d16 -Os -Ox -mfloat-abi=softfp -mthumb
./configure
--prefix=/zwjinfo/ffmpeg/android/arm
--enable-shared --disable-static --disable-doc --disable-ffserver
--enable-cross-compile --cross-prefix=/zwjinfo/ndkr10/android-ndk-r10/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
--target-os=linux --arch=arm --sysroot=/zwjinfo/ndkr10/android-ndk-r10/platforms/android-L/arch-arm/
--extra-cflags=‘-Os -fpic -marm‘ --extra-ldflags=
./configure --prefix=/zwjinfo/ffmpeg/dist --enable-cross-compile --enable-static --enable-shared --enable-gpl --disable-encoders --disable-muxers --disable-filters --arch=arm --cpu=armv7-a --enable-memalign-hack --disable-symver --enable-asm --enable-neon --cross-prefix=/zwjinfo/ndkr10/android-ndk-r10/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --sysroot=/zwjinfo/ndkr10/android-ndk-r10/platforms/android-L/arch-arm --sysinclude=/zwjinfo/ndkr10/android-ndk-r10/platforms/android-L/arch-arm --disable-debug --target-os=linux --extra-cflags=‘-mfloat-abi=softfp -O3 -mfpu=vfpv3-d16 -marm -mthumb‘ --disable-doc --disable-yasm --enable-pic --enable-small --enable-hardcoded-tables --extra-ldflags=‘-Wl,--fix-cortex-a8 -mthumb‘
-march=armv7-a -mfpu=vfpv3-d16 -Os -Ox -mfloat-abi=softfp -mthumb