2012/04/17

[Android] 可攜式Android開發環境 Portable Eclipse with SDK + NDK for Windows

如何才能隨時隨地的在任何一台windows上開發Android程式呢?
參考此文,你將能製作自己的可攜式Android開發環境,包含SDK & NDK。

此文假設 安裝路徑為 R:\

Part I 建制 Eclipse + Android SDK 環境
Step 1 建立目錄
GenDir.bat
@echo off
mkdir avd
mkdir avd\.android
mkdir tools
mkdir workspace
Step 2 下載 Eclipse classic
http://www.eclipse.org/downloads/

Eclipse Classic 3.7.2, windows 32bit,檔名:eclipse-SDK-3.7.2-win32.zip

Step 3 下載 Java SDK(JDK)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Windows x86 32bit, 檔名:jdk-7u3-windows-i586.exe

Step 4 下載 Android SDK
http://developer.android.com/sdk/index.html
檔名 : android-sdk_r18-windows.zip

Step 5 下載 ADT (可選,非必要)
http://developer.android.com/sdk/eclipse-adt.html#installing
檔名:ADT-18.0.0.zip

Step 6 安裝JDK
1. 將JDK安裝到系統,只裝Develpment Tools 並指定目錄到C:\jdk1.7.0_03\
只裝Development Tools
變更目錄到c:\jdk1.7.0_03
2. C:\jdk1.7.0_03\複製到R:tools下

3. 移除此次安裝的JDK

Step 7 安裝 Eclipse 與 Android SDK
將eclipse-SDK-3.7.2-win32.zip解壓縮到R:\tools,並更名為eclipse3.7.2-x86
將android-sdk_r18-windows.zip解壓縮到R:\tools
Step 8 編輯 eclipse.ini,並變更屬性為"唯讀"
位置:R:\tools\eclipse3.7.2-x86\eclipse.ini
黃色為移除的,紅色是新增的
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms40m
-Xmx384m
-vm
../jdk1.7.0_03-x86/bin/javaw
-vmargs
-Xms128m
-Xmx1024m
-XX:PermSize=128M
-XX:MaxPermSize=256M
-XX:+UseParallelGC

Step 9 設定 Eclipse 使用 Android SDK
1. 啟動 Eclipse,指定workspace為"..\..\workspace"

設定workspace "..\..\workspace",實際上為 R:\workspace
2. 安裝ADT(android Development Tools)
Help -> Install New Software... -> Add...
可直接http/https安裝或透過Step5的ADT-18.0.0.zip
或選擇 Archive,選取在Step 4時下載的ADT-18.0.0.zip
3. 資訊讀取成功後,選擇全部可安裝的套件。
4. 安裝後重新啟動,如果問你要不要自動裝android sdk,取消它。
到 Window -> Preferences -> Android
將SDK location指向 "..\android-sdk-windows"


5. Window -> Android SDK Manager
程式會上網取得目前Android API相關訊息,選擇想裝的套件,建議選取 2.1 -> 4.x 內的 SDK platform
選擇的元件皆從網路上下載,須要一段不短的等侯時間。

Part II 建制 NDK 環境
Step 1 載Android NDK
檔名:android-ndk-r7c-windows.zip

Step 2 下載與安裝 cygwin
Source : Install from Internet
Root Directory : R:\tools\cygwin
Local Package Directory : R:\tools\cygwinsrc
Download Site : ftp://mirrors.kernel.org
加選套件(Package) : Devel/Make & Shells/Bash
連續click所要加裝的項目,至到出現版本號碼
Step 3 設定Cygwin與安裝 Android NDK
1. 設定cygwin.bat
位置:R:\tools\cygwin\Cygwin.bat
@echo off
R:
chdir R:\tools\cygwin\bin
for /F %%A in ('cd') do set WD=%%A
chdir %WD%/bin

bash --login -i
2. 安裝 Android至cygwin的opt目錄
3. 編輯 cygwin的profile
位置:R:\tools\cygwin\etc\profile
在結尾處新增
export NDK_HOME=/opt/android-ndk-r7c
export PATH=$PATH:$NDK_HOME:$NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin

Step 4 建立啟動用的Script
1. 建立 common.bat
位置:R:\common.bat
用途:此檔將產生對應的環境變數
@echo off
set DRIVER_LETTER=%cd:~0,1%
set JAVA_HOME=%DRIVER_LETTER%:\tools\jdk1.7.0_03-x86
set SDK_HOME=%DRIVER_LETTER%:\tools\android-sdk-windows
set ANDROID_SDK_HOME=%DRIVER_LETTER%:\avd
set WORK=%DRIVER_LETTER%:\workspace
set PATH=%JAVA_HOME%\bin;%SDK_HOME%\tools;%SDK_HOME%\platform-tools;%PATH%
2. 建立 LaunchCygwin.bat
位置:R:\LaunchCygwin.bat
用途:啟動cygwin,並將參數設定好,可以直接執行adb、android、ddms一類的程式。
@echo off
call common.bat
cd tools\cygwin
Cygwin.bat
3. 建立 LaunchEclipseX86.bat
位置:R:\LaunchEclipseX86.bat
用途:使用此啟動檔,avd才會指向對應的地方(R:\avd)。
@echo off
call common.bat
cd tools\eclipse3.7.2-x86
start eclipse.exe
4. 建立 LaunchCMDShell.bat
位置:R:\LaunchCMDShell.bat
用途:產生一個包含環境變數的command shell (CMD.exe)
@echo off
call common.bat
set java_exe=%JAVA_HOME%\bin\java.exe
set javaw_exe=%JAVA_HOME%\bin\javaw.exe
cmd.exe

最後的目錄結構


Part III 測試與修正
Step 1 測試 cygwin
1. 點擊 LaunchCygwin.bat,測試以下指令。
Step 2 AVD
Step 1最後會啟動 AVD manager,利用它來產生AVD
產生後,對應的avd可以在R:\avd\.android\avd看到。

修正不正常的AVD
當你在各平台間移動時,如果磁碟代號並未設為固定時,AVD會產生問題。
進入AVD manager後,選取 x 的AVD,點擊Edit ..,進入後,選擇下方Edit AVD.確認後,即修正完成。
程式會提示路徑有錯,按OK即可。

小提示碎碎念
  1. Android SDK的API下載後,是與SDK存放在同一個目錄,只要保存好SDK目錄(本例為R:\tools\android-sdk-windows),就不須要一直重覆下載了。
  2. 選擇32bit的原因是為了讓所有windows平台可以使用,如果你跟我一樣有x64情節,二個都裝,也是可以的,對應的jdk也必須要有。承1所述,已經下載過的API,也會直接在新裝的Eclipse上出現。
  3. eclipse.ini 內的jdk路徑,有時候會被自動改回絕對路徑,該檔建議設成讀。
  4. Android的API安裝,建議選取 2.1 -> 4.x 內的 SDK platform,目前此區間的設備是最多的,可以的話,1.6也選進來。Google APIs為Google的服務如 map view,有使用的話,要勾選開發的目標平台對應版本。
  5. cygwin下載後的size約22.6MByte(此處的cygwinsrc目錄),而cygwin的download site經常不太正常,即使台灣的ntu、nctu也不是很正常,我選擇mirrors.kernel.org,主要是為了穩定性,並且實際上下載的檔案並不大,喜歡嘗試其他server也無不可。
  6. 即使在沒有安裝 Java 的windows系統上,它同樣是可以跑的。
  7. cygwin下的.bat檔,必須以全名執行,如android指令,實際上是android.bat ,所以當啟動avd時,必須執行 android.bat avd。

後記
最後,以本文的產生的一個包含了該有的API,可以開始開發的tools目錄的大小為2.6Gbytes,包含:

  1. Eclipse 3.72 x86
  2. Cygwin (default + bash & make)
  3. Android NDK & SDK(SDK已包含2.1 -> 4.x 內的 SDK platform + 4.03預設全選 + Google USB Driver)
  4. JDK 1.7.0_03 x86

(原始的zip檔、安裝檔 & cygwin 下載區(cygwinsrc)都不包含)




tag : Portable Eclipse with Android SDK and NDK for Windows


5 則留言:

  1. 您好,我在設定SDK時遇到了無法使用相對路徑的狀況,必須設定絕對路徑才能儲存設定,請問有甚麼辦法能解決呢?

    回覆刪除
    回覆
    1. 設定SDK無法儲存,是因為Eclipse會檢查你所指定的位置,是否有SDK存在,請檢查你的相對位置是否正確。

      刪除
    2. 太謝謝你了,我解決問題了! :)
      原來是我沒注意到SDK File上還有多一層當初解壓縮所產生資料夾

      刪除
  2. 以前我曾經在cmd下用過subst這指令,可以將資料夾指定成一個磁碟機
    若是將環境可攜的狀況下,直接使用bat先設定特定資料夾(ex:AndroidDevelope -> z:)
    如此是否就改用絕對路徑運行就可以了呢?

    回覆刪除
  3. 如果要以這樣的方式用絕對路徑,何必再作這麼多麻煩事?
    再者,現在 Google 提供整合好的 eclipse 了,不須要再這麼麻煩了。

    回覆刪除