找回密码
 立即注册
查看: 2654|回复: 1

android ndk开发-环境搭建(1)

[复制链接]
发表于 2012-5-24 01:11:22 | 显示全部楼层 |阅读模式
开发环境:ubuntu 11.04 + Android NDK r5b + eclipse +ADT0.9.9

android sdk 过程比较简单,这里就不介绍了。


1、下载android-ndk r5b
$wget  http://dl.google.com/android/ndk ... b-linux-x86.tar.bz2

2、将下载的ndk解压到某个目录:
$tar -xvf  android-ndk-r5b-linux-x86.tar.bZ2

3、修改当前用户的.profile,添加PATH

NDK=/home/lql/android-ndk-r5b
export NDK
PATH=$NDKPATH
export PATH
然后注销当前用户,重新登录,echo $PATH,看看PATH中有没有包含NDK

4、编写一个简单的例子
在eclipse里面新建一个hello android项目:

Java代码  [url=][/url]

  • public class Hello extends Activity {
  •     public native String hello();
  •     /** Called when the activity is first created. */
  •     @Override
  •     public void onCreate(Bundle savedInstanceState) {
  •         super.onCreate(savedInstanceState);
  •         setContentView(R.layout.main);
  •         String hello = hello();
  •         final TextView view = (TextView)findViewById(R.id.view);
  •         view.setText(hello);
  •     }
  •     static{
  •         System.loadLibrary("hello");
  •     }
  • }


5、到项目的bin目录下:
执行:javah -jni com.lql.Hello
会在该目录下生成一个.h文件:
com_lql_Hello.h 内容如下:
C代码  [url=][/url]

  • /* DO NOT EDIT THIS FILE - it is machine generated */
  • #include <jni.h>
  • /* Header for class com_lql_Hello */
  • #ifndef _Included_com_lql_Hello
  • #define _Included_com_lql_Hello
  • #ifdef __cplusplus
  • extern "C" {
  • #endif
  • /*
  • * Class:     com_lql_Hello
  • * Method:    hello
  • * Signature: ()Ljava/lang/String;
  • */
  • JNIEXPORT jstring JNICALL Java_com_lql_Hello_hello
  •   (JNIEnv *, jobject);
  • #ifdef __cplusplus
  • }
  • #endif
  • #endif



6、在该目录下编写一个com_lql_Hello.c文件,内容如下:
C代码  [url=][/url]

  • #include <jni.h>
  • #include <string.h>
  • JNIEXPORT jstring JNICALL Java_com_lql_Hello_hello
  •   (JNIEnv *env, jobject thiz)
  • {
  •     return (*env)->NewStringUTF(env,"Hello JNI");
  • }


7、将com_lql_Hello.c拷贝到jni目录,同时在该目录下新建Android,mk文件,内容如下:
C代码  [url=][/url]

  • LOCAL_PATH:= $(call my-dir)
  • include $(CLEAR_VARS)
  • LOCAL_MODULE    := hello
  • LOCAL_SRC_FILES := com_lql_Hello.c
  • include $(BUILD_SHARED_LIBRARY)


8、在终端下编译该项目:
$cd  hello/jni
$ndk-build
结果如下:
lql@lql-laptop:~/workspace/hello/jni$ ndk-build
Compile thumb  : hello <= com_lql_Hello.c
SharedLibrary  : libhello.so
Install        : libhello.so => libs/armeabi/libhello.so


9、编译之后,会在hello下面生成libs目录,该目录下包armeabi/libhello.so
在eclipse中刷新项目,然后在模拟器中运行:
会在activity中显示如下内容:
Hello JNI

到此,第一个ndk项目完成!


备注:
如果要查看ndk-build命令如何使用,可以参看android-ndk-r5b目录下的documentation.html文件,里面有详细解释相关命令。

欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

发表于 2013-1-12 02:34:32 | 显示全部楼层
顶起顶起顶起
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-11-24 21:05 , Processed in 0.085987 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表