开发环境:Ubuntu 10.04(安装好JDK6+Android SDK+Eclipse IDK+ADT

步骤:(注意使用NDK前要保证Android SDK开发环境搭建好,步骤可参考在《Ubuntu下安装AndroidSDK开发环境(一、二、三)》三篇文章和《关于<Ubuntu下安装AndroidSDK开发环境>的修改》一文,网址分别是:http://blog.sina.com.cn/s/blog_3e4774e30100lfr2.html

http://blog.sina.com.cn/s/blog_3e4774e30100lfr5.html

http://blog.sina.com.cn/s/blog_3e4774e30100lfr7.html

http://blog.sina.com.cn/s/blog_3e4774e30100lx2v.html

1、从http://androidappdocs.appspot.com/sdk/ndk/index.html下载最新版的NDK,现在最新版名字是android-ndk-r4b-linux-x86.zip,下载后使用unzip android-ndk-r4b-linux-x86.zip解压,解压后名字为android-ndk-r4b,接下来设置PATH环境变量:export PATH=$PATH:/home/guochongxin/android-ndk-r4b,设置该环境变量是因为等会在android-ndk-r4b目录下的ndk-build程序要被用到;

2、上面这样就配置好了NDK的开发环境,接下来就创建一个项目来测试一下,步骤如下:

1)、使用Eclipse创建一个Android项目,名字为“HelloNDKJNI”,Build Target设置为“Android 2.2”,Application Name设置为“HelloNdkJni”,Package Name设置为“com.gcx.ndkjni”,Create Activity设置为“.HelloNdkJni”,Min SDK Version设置为“8”;

2)、接下来创建C语言库,在EclipsePackage Explore里面的HelloNDKJNI项目下创建目录“jni”,并在该目录下创建两文件“Android.mk”和“hello-ndk-jni.c”,如下图所示:

AndroidNDK环境的配置" title="UbuntuAndroidNDK环境的配置" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; ;border:1px solid black;">

Android.mk文件内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= hello-ndk-jni

LOCAL_SRC_FILES := hello-ndk-jni.c

include $(BUILD_SHARED_LIBRARY)


hello-ndk-jni.c文件内容如下:

#include<string.h>

#include<jni.h>

jstringJava_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI( JNIEnv*env,jobjectthiz)

{

return (*env)->NewStringUTF(env, "Hello from NDK JNI !");

}

3)、编译创建的C库,打开终端,进行步骤1中的设置PATH环境变量操作(如果有进行,则可跳过),进入到创建的HelloNDKJNI项目中的jni目录,执行命令ndk-build,此时会在项目中生成libsobj目录,并在里面生成相应的文件,运行结果如下图所示:

AndroidNDK环境的配置" title="UbuntuAndroidNDK环境的配置" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; ;border:1px solid black;">

4)、刷新Eclipse中的Package Explore中的HelloNDKJNI项目,此时objlibs目录也添加进去了,在obj/armeabi分支下也多了libhello-ndk-jni.so文件,hello-ndk-jni这个名是根据2-2)步中的Android.mk文件中的LOCAL_MODULE决定的,接下来修改src/com.gcx.ndkjni分支下的HelloNdkJni.java文件,最后的文件内容如下:

packagecom.gcx.ndkjni;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.widget.TextView;

publicclassHelloNdkJniextendsActivity {

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv =newTextView(this);

tv.setText(stringFromNDKJNI());

setContentView(tv);

}

publicnativeString stringFromNDKJNI();

static{

System.loadLibrary("hello-ndk-jni");

}

}

5)、接下来就可以在模拟器运行程序了,运行前关于模拟器的配置及Run Configurations可以参考Ubuntu下安装AndroidSDK开发环境(三)》一文,运行结果如下图所示:

AndroidNDK环境的配置" title="UbuntuAndroidNDK环境的配置" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; ;border:1px solid black;">

更多的NDK例子,可以参考第1步中解压后目录下的samples目录下的项目。

参考网址:http://www.eoeandroid.com/viewthread.php?tid=2406&highlight=ndk

http://www.javaeye.com/topic/729133

Trackback:http://blog.sina.com.cn/s/blog_3e4774e30100mjug.html

更多相关文章

  1. Windows环境下Android(安卓)Studio v1.0安装教程
  2. Android实现为GridView添加边框效果
  3. Android使用AudioRecord遇到的问题与解决方法
  4. Android实现TextView字符串波浪式跳动
  5. android中使用properties文件配置
  6. Android(安卓)开发环境准备(Ubuntu)
  7. 使用本地仓库实现最新版ReactNative集成Android
  8. ViewPager实现QQ主界面,ViewFlipper实现某些新闻应用,自动播放,很
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)SurfaceFlinger原理详解
  2. BrowserslistError: Unknown version 67
  3. Eclipse下加载AndroidSDK源码
  4. Android(安卓)WakeLock 使用总结
  5. basic4android 开发教程
  6. Android(安卓)9.0 Bluetooth源码分析(三)蓝
  7. Android(安卓)4.0 Phone拨号和来电流程分
  8. Android中文API(114)——TabWidget
  9. Android动画学习三(Activity跳转动画)
  10. adb shell am 的用法