天天看點

NDK開發(一):Android NDK環境搭建

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

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

準備的檔案

NDK開發(一):Android NDK環境搭建

在新版本的ADT上安裝NDK環境非常友善,我的ADT版本是V22.0.5,版本号在打開ADT加載時會顯示出來

NDK開發(一):Android NDK環境搭建

在官網上: http://developer.android.com/tools/sdk/ndk/index.html 下載下傳最新的NDK,NDK版本在r7以上之後就內建了Cygwin,不需要單獨去安裝Cygwin

1、Eclipse配置

NDK開發(一):Android NDK環境搭建

SDK配置

NDK開發(一):Android NDK環境搭建

NDK配置,路徑就是解壓出來的NDK根目錄

NDK開發(一):Android NDK環境搭建

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

随便建立一個Android工程,添加Add Native Support

NDK開發(一):Android NDK環境搭建
NDK開發(一):Android NDK環境搭建
NDK開發(一):Android NDK環境搭建

此時建立的工程就多了一個jni目錄

NDK開發(一):Android NDK環境搭建

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, ϵͳÕҲ»µ½ָ¶      

工程右鍵,選擇以下選項

NDK開發(一):Android NDK環境搭建
NDK開發(一):Android NDK環境搭建

設定環境變量NDKROOT,Value就是你解壓出來的NDK目錄

NDK開發(一):Android NDK環境搭建

在這裡配置的:${NDKROOT}/ndk-build.com就是以下腳本檔案

NDK開發(一):Android NDK環境搭建

這時再去Clean工程就不會報錯了

NDK開發(一):Android NDK環境搭建

下面就來編寫JNI的C++檔案,但是沒有代碼提示,是由于沒有導入頭檔案的原因

NDK開發(一):Android NDK環境搭建

導入頭檔案方法,選擇“Project Properties”

NDK開發(一):Android NDK環境搭建

點選“Add"

NDK開發(一):Android NDK環境搭建
NDK開發(一):Android NDK環境搭建

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

NDK開發(一):Android NDK環境搭建

接下來就是編寫代碼

在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:= NDKTestLOCAL_SRC_FILES := NDKTest.cppinclude $(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 工程

NDK開發(一):Android NDK環境搭建

 成功通過

NDK開發(一):Android NDK環境搭建

再運作程式,很不幸,報錯了

NDK開發(一):Android NDK環境搭建

如果是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");}}      

成功通過

NDK開發(一):Android NDK環境搭建

源代碼下載下傳: http://download.csdn.net/detail/deng0zhaotai/7540771

更多的例子可以到以下目錄擷取,這是NDK自帶的例子。

繼續閱讀