本文將講述如何在Linux平臺下使用命令行開發Android應用程序,以及如何創建PhoneGap的android項目,如果你對這此感興趣,請就繼續閱讀本文。
首先,讓我們安裝Android SDK(我假設你已經安裝了JDK和Ant)。你可以從在這裏安裝SDK到你的開發平臺上。由於我使用的是Ubuntu,所以我下載Linux平臺下的SDK到我的主目錄。解壓縮下載文件,並設置加載可執行文件的路徑:
1 |
$ tar
xvf android-sdk_r16-linux.tgz |
2 |
$ export
PATH=$PATH:~/android-sdk-linux/tools:~/reqs/android-sdk-linux/platform-tools |
3 |
$ 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 |
<span style= "font-size: 14px;" >$ android avd</span> |
通過上一步,你可以下載並創建許多AVD。
查看AVD列表,可以使用以下命令:
1 |
$ android list avd |
假設現在我們要在AVD上運行名字爲"Gingerbread"的模擬器,使用下面命令:
1 |
$ emulator @Gingerbread |
現在我們已經基礎設置好了開發Android應用程序的環境。
創建一個Android項目
讓我們創建一個Android項目(要創建PhoneGap的Android項目,請閱讀下一節):
1 |
$ 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 |
$ cd
android_proj/ |
2 |
$ ls
src/com/example/TestProjActivity.java |
3 |
src/com/example/TestProjActivity.java |
安裝和創建PhoneGap的應用程序
如果你不打算創建HTML5的應用程序或不打算使用PhoneGap,你可以跳過這一節。
安裝好Android SDK後,從這裏獲取Cordova(原名PhoneGap)(或從GitHub獲取一個穩定的版本),並且添加bin目錄到你的PATH:
1 |
$ git clone git://git.apache.org/incubator-cordova-android.git |
2 |
$ export
PATH=$PATH:~/incubator-cordova-android/bin |
讓我們創建一個Cordova項目,這是將android項目進行套殼,需要設置PhoneGap的依賴(jar和js文件):
1 |
$ cd
~/incubator-cordova-android |
2 |
$ ./bin/create ~/phonegap_android_proj com.example TestProjActivity 3 |
第一個參數是該項目的路徑;
第二個是包名(JAVA);
第三是初始Activity的名字,它用於載入index.html;
第四個參數是Android SDK的ID(如'android 1.5'的id是'3')。
讓我們來看看,如果該項目已成功創建:
1 |
$ cd
~/phonegap_android_proj/ |
2 |
$ ls
assets/www/ |
3 |
cordova-1.5.0.js index.html main.js master.css |
4 |
$ ls
libs/ |
5 |
cordova-1.5.0.jar |
6 |
$ ls
res/xml/ |
7 |
cordova.xml plugins.xml |
Ant命令
假設現在,我們已經完成該項目的代碼編寫,我們需要在模擬器上測試。因此,先讓我們啓動模擬器,然後啓動Android調試橋(ADB)。建議你用超級用戶啓動,因爲如果以後用你的手機連接,它需要有必要的權限來訪問:
1 |
$ sudo
~/android-sdk-linux/platform-tools/adb start-server |
1 |
$ ps
aux| grep
adb |
2 |
root 12589 0.0 0.0 20184 948 pts/3 Sl 16:43 0:00 adb fork-server server |
將應用程序部署到模擬器
在項目的根目錄運行ant命令,部署應用程序到模擬器(用debug key進行簽名):
1 |
$ cd
~/android_proj |
2 |
$ ant clean debug install |
當應用程序顯示在模擬器上,你就可以測試了。如果你打算使用手機測試,同樣可以使用上述相同的命令。
你可以使用的虛擬調試監視服務器(DDMS)調試和查看日誌信息:
1 |
$ ddms |
此時,只要你對開發的應用程序滿意,你就可以進行簽名,並把它發佈到谷歌市場。
簽名應用程序發佈到市場
首先,讓我們生成一個私鑰用於簽名:
1 |
$ keytool -genkey - v
-keystore app_signing.keystore - alias
release \ |
2 |
-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 |
$ 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,它已經包含了上述命令,而且還帶有其他好的東西。