英文原文:developing-android-applications-from-command-line,翻譯:oschina
本文將講述如何在 Linux 平臺下使用命令列開發 Android 應用程式,以及如何建立 PhoneGap 的 android 專案,如果你對這此感興趣,請就繼續閱讀本文。
首先,讓我們安裝 Android SDK(我假設你已經安裝了 JDK 和 Ant)。你可以從在這裡安裝 SDK 到你的開發平臺上。由於我使用的是 Ubuntu,所以我下載 Linux 平臺下的 SDK 到我的主目錄。解壓縮下載檔案,並設定載入可執行檔案的路徑:
1 2 3 |
$ tar xvf android-sdk_r16-linux.tgz $ export PATH=$PATH:~/android-sdk-linux/tools:~/reqs/android-sdk-linux/platform-tools $ android sdk |
如果你不希望每次都設定 PATH,你可以設定你的〜/.bashrc或〜/.bash_profile檔案。
然後,使用 Android SDK 的命令開啟 Android SDK 管理器。下載必要的 SDK 版本包。我打算開發薑餅和冰淇淋三明治系統手機的應用程式,因此下載 Android 4.0.3(API 15)和 Android 2.3.3(API 10)的元件。
讓我們來檢查是否安裝了 SDK 版本包:
1 |
$ android list targets |
當開發應用程式的時候,我們需要建立一個 Android 虛擬機器(AVD)來測試應用程式:
1 |
$ android avd |
通過上一步,你可以下載並建立許多 AVD。
檢視 AVD 列表,可以使用以下命令:
1 |
$ android list avd |
假設現在我們要在 AVD 上執行名字為”Gingerbread“的模擬器,使用下面命令:
1 |
$ emulator @Gingerbread |
現在我們已經基礎設定好了開發 Android 應用程式的環境。
建立一個 Android 專案
讓我們建立一個 Android 專案(要建立 PhoneGap 的 Android 專案,請閱讀下一節):
1 2 |
$ android create project -n TestAndroidProj -t 'android-15' -p ~/android_proj -k com.example -a TestProjActivity |
●-n:專案名(TestAndroidProj);
●-t:android SDK 版本號(android-15);
●-p:Android 專案的路徑;
●-k:Java 的包名;
●-a:初始的 Activity。
執行上面的命令後,一個 Android 專案就建立完成了。
檢查一下目錄及檔案:
1 2 3 |
$ cd android_proj/ $ ls src/com/example/TestProjActivity.java src/com/example/TestProjActivity.java |
安裝和建立 PhoneGap 的應用程式
如果你不打算建立 HTML5 的應用程式或不打算使用 PhoneGap,你可以跳過這一節。
安裝好 Android SDK 後,或從 GitHub 獲取一個穩定的版本,並且新增 bin 目錄到你的PATH:
1 2 |
$ git clone git://git.apache.org/incubator-cordova-android.git $ export PATH=$PATH:~/incubator-cordova-android/bin |
讓我們建立一個 Cordova 專案,這是將 android 專案進行套殼,需要設定 PhoneGap 的依賴(jar 和 js 檔案):
1 2 |
$ cd ~/incubator-cordova-android $ ./bin/create ~/phonegap_android_proj com.example TestProjActivity 3 |
第一個引數是該專案的路徑;
第二個是包名(JAVA);
第三是初始 Activity 的名字,它用於載入 index.html;
第四個引數是 Android SDK 的 ID(如’android 1.5’的 id 是’3’)。
讓我們來看看,如果該專案已成功建立:
1 2 3 4 5 6 7 |
$ cd ~/phonegap_android_proj/ $ ls assets/www/ cordova-1.5.0.js index.html main.js master.css $ ls libs/ cordova-1.5.0.jar $ ls res/xml/ cordova.xml plugins.xml |
Ant 命令
假設現在,我們已經完成該專案的程式碼編寫,我們需要在模擬器上測試。因此,先讓我們啟動模擬器,然後啟動 Android 除錯橋(ADB)。建議你用超級使用者啟動,因為如果以後用你的手機連線,它需要有必要的許可權來訪問:
1 |
$ sudo ~/android-sdk-linux/platform-tools/adb start-server |
檢查 adb 服務程式執行情況:
1 2 3 |
$ ps auxgrep adb root 12589 0.0 0.0 20184 948 pts/3 Sl 16:43 0:00 adb fork-server server |
將應用程式部署到模擬器
在專案的根目錄執行 ant 命令,部署應用程式到模擬器(用 debug key 進行簽名):
1 2 |
$ cd ~/android_proj $ ant clean debug install |
當應用程式顯示在模擬器上,你就可以測試了。如果你打算使用手機測試,同樣可以使用上述相同的命令。
你可以使用的虛擬除錯監視伺服器(DDMS)除錯和檢視日誌資訊:
1 |
$ ddms |
此時,只要你對開發的應用程式滿意,你就可以進行簽名,並把它釋出到谷歌市場。
簽名應用程式釋出到市場
首先,讓我們生成一個私鑰用於簽名:
1 2 |
$ keytool -genkey -v -keystore app_signing.keystore -alias release \ -keyalg RSA -keysize 2048 -validity 10000 |
JDK 的 keytool 用於建立私鑰。
-keystore:輸出私鑰檔案的名稱;
-alias:私鑰別名,可儲存多個鍵在金鑰庫用來後面使用;
設定 RSA 加密演算法,金鑰長度 2048 位和 10000 天的有效期。
確保生成的 keystore 檔案非常安全,因為這谷歌市場對你的唯一標識。
成功生成私鑰後,我們把應用程式編譯成釋出模式:
1 |
$ ant clean release |
你會發現在你專案的 bin 目錄下,有一個 apk 檔案:<project_name>-release-unsigned.apk(在我們的例子中是’TestAndroidProj-release-unsigned.apk’)。說明我們還沒有對先前建立的私鑰進行應用程式簽名:
1 2 |
$ jarsigner -keystore app_signing.keystore -digestalg SHA1 -sigalg MD5withRSA bin/TestAndroidProj-release-unsigned.apk release |
使用 jarsigner 工具簽名,keystore 是先前建立的,同時指定簽名演算法,釋出 Android 應用程式用了 keystore 的別名。
讓我們來驗證一下:
1 |
$ jarsigner -verify bin/TestAndroidProj-release-unsigned.apk |
你應該得到一個’jar verified’ 的訊息。
最後,讓我們提交生成的 apk 檔案到 Google 市場。
1 |
$ zipalign -v 4 bin/TestAndroidProj-release-unsigned.apk bin/TestAndroidProj.apk |
‘4’指定 apk 檔案使用 4 位元組;接下來的引數是簽名後的應用檔案;最後一個引數是輸出上傳到谷歌市場的檔案。
這裡唯一我們經常使用的命令是 ant clean debug install,可以避免在 Eclipse 執行時記憶體不足。
注意:如果你是一個 Emacs 使用者,你可以使用 android-mode,它已經包含了上述命令,而且還帶有其他好的東西。