Eclipse下安裝Android開發環境:NDK和CDT
(本文根據互連網資料收集整理,並經過作者親自驗證)
cheungmine
本文記錄了最新的eclipse版本helios如何搭建Android的JDK和NDK的開發環境。並提供了整合NDK和cygwin的方法。為了使使用者不用切換到cygwin命令列去編譯NDK的代碼,給出了配置eclipse下的NDK環境。最後給出如何配置eclipse上的C/C++開發環境——CDT。本文還提供了一個最簡單的樣本說明NDK的使用方法。
關鍵詞:eclipse,Android,Android SDK,cygwin,NDK,CDT
1 準備工作1.1Windows XP 32位環境PC機,接入寬頻互連網。1.2安裝JDK
:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u12-oth-JPR@CDS-CDS_Developer
下載之後得到:jdk-6u12-windows-i586-p.exe。安裝即可。本例子是安裝在:D:\JavaHome。正確安裝之後,系統內容變數中應包含如下設定(假定目錄和本文一樣):
JAVA_HOME=...
D:\JavaHome\jdk1.6.0_12
CLASSPATH=...
%JAVA_HOME%\bin;.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;;C:\ProgramFiles\Java\jre6\lib\ext\QTJava.zip;D:\OraClient10g\jdbc\lib\classes12.zip
Path=
%JAVA_HOME%;.;%JAVA_HOME%\bin;...
1.3安裝eclipse(HEILOS)
:http://www.eclipse.org/downloads/
下載:Eclipse IDE for Java EEDevelopers, 206 MB
得到:eclipse-jee-helios-SR2-win32.zip
Eclipse不需要安裝,解壓eclipse-jee-helios-SR2-win32.zip到:D:\helios。
啟動:D:\helios\eclipse.exe。工作空間為:D:\helios\workspace
這時可以更新eclipse:
開啟eclipse;菜單Help->Check For Updates,然後檢查更新。選擇必要的組件更新eclipse。
2 安裝Android 開發工具2.1安裝Android SDK
在下面的地址中下載:android-sdk_r04-windows.zip
http://rghost.net/download/817413/e08025da54d8e38f7e97bcdce6117620a33c054e/android-sdk_r04-windows.zip
解壓android-sdk_r04-windows.zip到:D:\helios\android-sdk-windows。
更新android-sdk到最新:
eclipse菜單Help->Check For Updates,進行必要的更新。
eclipse菜單Help->Install New Software:
Work with:
http://dl-ssl.google.com/android/eclipse/site.xml
點擊按鈕[Select All]
點擊按鈕[Next>]
2.2配置Android SDK
1)設定引用:
eclipse菜單->Window->Preferences:
左邊選擇+Android,右邊填入:
SDK Location:D:\helios\android-sdk-windows
點擊按鈕[Apply]
2)更新Android SDK:
eclipse菜單->Window->Android SDK and AVD Manager
右邊應該顯示上一步設定的SDK Location:D:\helios\android-sdk-windows
點擊左邊的Available packages,選擇要更新的包。
點擊左邊的Installed Packages,按 [Updated All...]可以更新全部已經安裝的包。
2.3 建立Android虛擬機器:
eclipse菜單->Window->Android SDK andAVD Manager,左邊選擇:
Availabledevices,右邊按[New...]按鈕,彈出Create new Android VirtualDevice (AVD)對話方塊:
Name:HTC-G7
Target:Android 2.2 - API Level 8
SD Card:
Size=1000 MiB
按[Create AVD]按鈕。這個AVD要在每次部署前啟動(eclipse菜單->Window->Android SDK andAVD Manager,左邊選擇:Availabledevices,右邊選擇HTC-G7,按[Start...]按鈕啟動AVD。)
2.3配置cygwin 和Android NDK
以往,使用GCC給ARM寫程式很麻煩,他的交叉編譯環境是需要在Linux下啟動並執行。而其他的很多工具又不得不在Windows下使用,於是人們不得不來回切換作業系統,很麻煩,也浪費了大量寶貴的時間。CYGWIN的出現總算解決了這一問題。
CYGWIN是一個Windows作業系統下類Linux的運行環境,包括一個用於提供Linux API的DLL和一系列的linux工具。在http://cygwin.com/可以下載到最新版本。
下載完Cygwin的安裝程式setup.exe,可以安裝了。在安裝之前首先確定你要安裝的那個磁碟機上有3GB的空間。Cygwin在安裝的時候可以選擇直接從網路安裝、下載安裝包和本地安裝,我是選的下載安裝包,將需要的東西下到本地磁碟裡,再從本地安裝,下一步選擇安裝的位置,設定網路連接方式並選擇下載網站,之後就是選擇需要安裝的包,有四種安裝狀態分別是Default、Install、Reinstall、Uninstall,如果你不能確定你所需要的環境,那就把ALL上的狀態設為Install,選擇全部安裝。
1)安裝cygwin
下載:http://www.cygwin.com/setup.exe。安裝時選擇ALL以免遺漏gcc等工具。漫長的等待(基於網速情況,也許一夜)之後,cygwin下載完畢。解壓到:D:\cygwin。然後手動設定Windows環境變數,增加D:\cygwin;D:\cygwin\bin到Path:
Path=...;D:\cygwin;D:\cygwin\bin
驗證:調出命令視窗cmd,鍵入命令:cygwin斷行符號,啟動cygwin工具視窗,運行:
make –v
驗證cygwin是否正確:
GNU Make 3.81
Copyright (2006) Free Software Fundation Inc.
...
下載android-ndk-r4-windows.zip安裝包,:
http://developer.android.com/sdk/ndk/index.html
解壓縮到:D:\helios\android-ndk-r4。
寫本文時,已經有最新的:android-ndk-r6-windows.zip
如果使用android-ndk-r6,請注意更改路徑的配置。
2)整合cygwin和Android NDK
編輯檔案:D:\cygwin\home\Administrator\.bash_profile,在末尾增加:
# Android NDK
NDK=/cygdrive/d/helios/android-ndk-r4
export PATH="$NDK:$PATH"
儲存後重新啟動cygwin(開始->運行:cygwin)。
3)使用NDK編譯NDK樣本:
啟動cygwin;
進入d:\helios\android-ndk-r4\samples\hello-jni\jni 目錄(或者相應工程的 *.C 或 *.CPP 檔案所在目錄內):
#cd /cygdrive/d/helios/android-ndk-r4/samples/hello-jni/jni
執行ndk-build 編譯即可:
#ndk-build
3 Android NDK工程樣本
下面示範如何建立一個最簡單的NDK項目,並將cygwin+NDK整合到eclipse中。
1)啟動eclipse,菜單
File->New->Project->+Android--AndroidProject
建立項目,按[Next>]按鈕彈出New Android Project對話方塊,輸入下面的內容:
Priject name:ndkfoo
勾選Android 2.2
Applicationname: ndkfoo
Package name:com.mine.ndkfoo
勾選Create Activity: ndkfooActivity
Min SDK Version:8
按[Finish]按鈕。
2)在項目ndkfoo下建立jni目錄(右鍵項目->New->Folder)。
3)在jni目錄下面建立Android.mk檔案,內容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Here we give our module name and sourcefile(s)
LOCAL_MODULE := ndkfoo
LOCAL_SRC_FILES := ndkfoo.c
include $(BUILD_SHARED_LIBRARY)
4)在jni目錄下面建立ndkfoo.c檔案,內容如下:
#include <string.h>#include <jni.h>jstringJava_com_mine_ndkfoo_ndkfooActivity_invokeNativeFunction(JNIEnv* env, jobjectjavaThis) {return (*env)->NewStringUTF(env, "Hello from nativecode!");}
5)修改ndkfooActivity.java檔案(ndkfoo/src/com.mine.ndkfoo)如下:
package com.mine.ndkfoo;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;public class ndkfooActivity extendsActivity {//load the library - name matches jni/Android.mkstatic{System.loadLibrary("ndkfoo");}//declare the native code function - must match ndkfoo.cprivatenative String invokeNativeFunction();/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// this is where we call the native codeString hello = invokeNativeFunction();newAlertDialog.Builder(this).setMessage(hello).show();}}
6)每次編譯ndkfoo項目之前必須先使用cygwin的ndk-build命令列編譯ndkfoo.c:
啟動cygwin;
進入D:\helios\workspace\ndkfoo\jni目錄:
# cd /cygdrive/d/helios/workspace/ndkfoo/jni
執行ndk-build 編譯即可:
# ndk-build
libndkfoo.so編譯成功。
7)回到eclipse,重新編譯ndkfoo項目。部署到AVD上(必須首先啟動AVD->HTC-G7)。可以看到一個最簡單的Android NDK程式正確運行到HTC-G7虛擬機器中。
4 整合NDK和Eclipse
在eclipse中選中上面建立的ndkfoo項目, 按Alt+Enter,顯示 Properties for ndkfoo視窗:
左邊選Builders,右邊按[New...]按鈕,彈出的對話方塊中雙擊Program表徵圖,在Edit Configuration 視窗中填入:
Name:NDK_Builder(這個名詞是任意的)
切換到Main Tab:
Location:
D:\cygwin\bin\bash.exe
Working Directory:
D:\cygwin\bin
Arguments:
--login -c "cd/cygdrive/d/helios/workspace/ndkfoo/jni && $NDK/ndk-build"
切換到Refresh Tab,勾選以下項:
Refresh resources upon completion.
The entire workspace
Recursively include sub-folders
切換到 Build Options,勾選以下項:
AllocateConsole
After a Clean
Buring manual builds
During auto builds
During a Clean
Spacify working set of relevant resources
這樣我們就把NDK和eclipse整合到一起。當更改ndkfoo.c檔案之後,就不用切換到cygwin命令視窗去執行ndkfoo的編譯了。
5 安裝Eclipse C/C++開發套件CDT
這個話題和NDK關係不大。
進入下面的地址頁面:
http://www.eclipse.org/cdt/downloads.php
可以看到:
CDT 7.0.2 for Eclipse Helios
Eclipse package: EclipseC/C++ IDE Helios SR2.
p2 software repository: http://download.eclipse.org/tools/cdt/releases/helios.
記下URL:
http://download.eclipse.org/tools/cdt/releases/helios
開啟eclipse菜單Window->Install new Software,
Work with:
http://download.eclipse.org/tools/cdt/releases/helios
按按鈕[Select All],[Next>],安裝和更新CDT。完成之後,就可以在eclipse中建立、編輯、編譯、調試C/C++程式了(但這樣的程式並不天生是一個Android NDK程式。更多的功能選項要逐步探索)。