Android NDK環境搭建

     在Android上要想開發出高效率的軟件,仍是需要用到C/C++語言,要想在Java上開發C/C++語言就需要在IDE上安裝NDK;在Android的官網上SDK開發環境已經包括了ADT插件。最新的Android開發IDE可以到官網下載:http://developer.android.com/sdk/index.htmlcss

由於近期Android官網和google在國內經常進不去,我就把下載的放到網盤,有需要的可以去下載:http://pan.baidu.com/s/1hq3iBGwhtml

準備的文件java


    在新版本號的ADT上安裝NDK環境很是方便。個人ADT版本號是V22.0.5,版本號號在打開ADT載入時會顯示出來android


在官網上:http://developer.android.com/tools/sdk/ndk/index.html下載最新的NDK。NDK版本號在r7以上以後就集成了Cygwin。不需要單獨去安裝Cygwinc++

一、Eclipse配置app


SDK配置ide


NDK配置,路徑就是解壓出來的NDK根文件夾post


下面就來測試下NDK是否已經成功安裝ui

隨便新建一個Androidproject,加入Add Native Supportgoogle




此時新建的project就多了一個jni文件夾


IDE有可能會報一個錯誤:

[2014-06-23 17:08:36 - Unable to launch cygpath. Is Cygwin on the path?] java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶

project右鍵。選擇下面選項



環境變量設置NDKROOT,Value就是你解壓出來的NDK文件夾


在這裏配置的:${NDKROOT}/ndk-build.com就是下面腳本文件


這時再去Cleanproject就不會報錯了


下面就來編寫JNI的C++文件。但是沒有代碼提示,是由於沒有導入頭文件的緣由


導入頭文件方法,選擇「Project Properties」


點擊「Add"



此時再按"alt + /"就有代碼提示


接下來就是編寫代碼

在NDKTest.cpp文件

#include <string.h>
#include <jni.h>

jstring Java_com_dzt_ndktest_MainActivity_stringJNI(JNIEnv* env,
        jobject thiz){
	return env->NewStringUTF("Hello JNI 個人第一個JNI");
}
Android.mk文件是本身主動生成的,可以不用改動

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDKTest
LOCAL_SRC_FILES := NDKTest.cpp

include $(BUILD_SHARED_LIBRARY)
Activity類調用代碼

package com.dzt.ndktest;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView tv = (TextView) findViewById(R.id.tv);
		tv.setText(stringJNI());
	}

	public native String stringJNI();

	static {
		System.loadLibrary("NDKTest");
	}
}
build project


成功經過


再執行程序,很是不幸。報錯了


假設是c++文件需要加上extern "C",從C語言導出

改動代碼例如如下

#include <string.h>
#include <jni.h>

extern "C" {
jstring Java_com_dzt_ndktest_MainActivity_stringFromJNI(JNIEnv* env,
		jobject thiz) {

	return env->NewStringUTF("Hello JNI");
}
}

成功經過


源碼下載:http://download.csdn.net/detail/deng0zhaotai/7540771
不少其它的樣例可以到下面文件夾獲取,這是NDK自帶的樣例。

相關文章
相關標籤/搜索