最新NDK开发环境配置+helloworld

转自:http://blog.csdn.net/fighter0593/article/details/16887099


参考了网上很多帖子,然后反复测试,一上午时间终于把NDK开发环境搞定了。能搞定至少参考了几十个贴,就不写转了吧


NDK开发环境搭建

2013-11-12

安装包: android-ndk-r9b-windows-x86.zip

官方网站下载地址:http://developer.android.com/tools/sdk/ndk/index.html#Downloads

 

安装方法:

(前提条件:已经安装配置好eclispe+SDK+ADT)

1、             解压android-ndk-r9b-windows-x86.zip到SDK文件夹

2、             设置NDK目录,Window->Preferences->Android->NDK,在NDK Location中设置好NDK路径,D:\Share\Android_SDK\android-ndk-r9b

阴影是我的SDK路径,注意不能有空格!!!

 

使用方法:(NDK之helloworld程序测试)

1、     新建一个安卓工程,起名为hellojni,注意不能使用下划线”_”,尽管使用下划线在JAVA开发中没有影响,但是在NDK中编写则会出现文件命名冲突,会造成命名歧异。

2、     选中hellojni工程,Project->Properties->Builders然后添加NDK编译器,NEW->Program  起名叫:NDK_Builder(随意),Location填写到D:\Share\Android_SDK\android-ndk-r9b\ndk-build.cmd,Working Directory填写${workspace_loc:/hellojni}(选择自己的工程)选择到需要编译的目录

3、     添加C++语法支持,Project->Properties->C/C++General->Paths and Symbols 在这里添加,点Add… 根据建立工程的SDK的API等级选择版本,我选择D:\Share\Android_SDK\android-ndk-r9b\platforms\android-17\arch-arm\usr\include,同时在Add to all languages 选项卡上打勾

4、     添加jni代码,在hellojni工程名上点右键,选择Android Tools->Add Native Support… 设置库名称为:hellojni(不用写.so,会自动补齐!)

5、     修改动态库源文件,在工程目录下会自动生成lib文件夹,其中有两个文件:hellojni.cpp和Android.mk

  Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hellojni

LOCAL_SRC_FILES := hellojni.cpp

include $(BUILD_SHARED_LIBRARY)

如果想使用本地编译好的库,则添加LOCAL_LIB

 

Hellojni.cpp

#include <jni.h>

#include <string.h>

 

extern "C"{//由于是C命名规则,所以必须使用extern”C”

 

jstring

Java_com_example_hellojni_MainActivity_stringFromJNIJNIEnv* env,

                                                 jobjectthiz )

{

   returnenv->NewStringUTF("helloworld!");

}

 

}

 

其中Java_com_example_hellojni_MainActivity_stringFromJNI,的命名规则是固定的:

JAVA_(包名)_(Activity名)_(方法名),所以在包中不要使用下划线,否则有歧异!!!

return env->NewStringUTF("helloworld!");是C++的返回方法。

 

6、     修改界面配置文件activity_main_xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

 

   <TextView

        android:id="@+id/text"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />

 

</RelativeLayout>

7、     修改MainActivity.java

packagecom.example.hellojni;

importandroid.os.Bundle;

importandroid.app.Activity;

importandroid.view.Menu;

importandroid.widget.TextView;

publicclass MainActivity extends Activity {

 

   @Override

   protected void onCreate(BundlesavedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_main);

          TextViewtv=(TextView)findViewById(R.id.text);

          tv.setText(stringFromJNI());

         

   }

          publicnative String  stringFromJNI();

    static {

       System.loadLibrary("hellojni");

    }

}

 

8、     Project->clean

9、     Project->Build ALL

10、  运行工程,结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值