本文將講述如何在Linux平臺下使用命令行開(kāi)發(fā)Android應用程序,以及如何創(chuàng )建PhoneGap的android項目,如果你對這此感興趣,請就繼續閱讀本文。
首先,讓我們安裝Android SDK(我假設你已經(jīng)安裝了JDK和Ant)。你可以從在這里安裝SDK到你的開(kāi)發(fā)平臺上。由于我使用的是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的命令打開(kāi)Android SDK管理器。下載必要的SDK版本包。我打算開(kāi)發(fā)姜餅和冰淇淋三明治系統手機的應用程序,因此下載Android 4.0.3(API 15)和Android 2.3.3(API 10)的組件。
讓我們來(lái)檢查是否安裝了SDK版本包:
1 | $ android list targets |
當開(kāi)發(fā)應用程序的時(shí)候,我們需要創(chuàng )建一個(gè)Android虛擬機(AVD)來(lái)測試應用程序:
1 | <span style="font-size:14px;">$ android avd</span> |
通過(guò)上一步,你可以下載并創(chuàng )建許多AVD。
查看AVD列表,可以使用以下命令:
1 | $ android list avd |
假設現在我們要在A(yíng)VD上運行名字為"Gingerbread"的模擬器,使用下面命令:
1 | $ emulator @Gingerbread |
現在我們已經(jīng)基礎設置好了開(kāi)發(fā)Android應用程序的環(huán)境。
讓我們創(chuàng )建一個(gè)Android項目(要創(chuàng )建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。
運行上面的命令后,一個(gè)Android項目就創(chuàng )建完成了。
檢查一下目錄及文件:
1 | $ cd android_proj/ |
2 | $ ls src/com/example/TestProjActivity.java |
3 | src/com/example/TestProjActivity.java |
如果你不打算創(chuàng )建HTML5的應用程序或不打算使用PhoneGap,你可以跳過(guò)這一節。
安裝好Android SDK后,從這里獲取Cordova(原名PhoneGap)(或從GitHub獲取一個(gè)穩定的版本),并且添加bin目錄到你的PATH:
1 | $ git clone git://git.apache.org/incubator-cordova-android.git |
2 | $ export PATH=$PATH:~/incubator-cordova-android/bin |
讓我們創(chuàng )建一個(gè)Cordova項目,這是將android項目進(jìn)行套殼,需要設置PhoneGap的依賴(lài)(jar和js文件):
1 | $ cd ~/incubator-cordova-android |
2 | $ ./bin/create ~/phonegap_android_proj com.example TestProjActivity 3 |
第一個(gè)參數是該項目的路徑;
第二個(gè)是包名(JAVA);
第三是初始Activity的名字,它用于載入index.html;
第四個(gè)參數是Android SDK的ID(如'android 1.5'的id是'3')。
讓我們來(lái)看看,如果該項目已成功創(chuàng )建:
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 |
假設現在,我們已經(jīng)完成該項目的代碼編寫(xiě),我們需要在模擬器上測試。因此,先讓我們啟動(dòng)模擬器,然后啟動(dòng)Android調試橋(ADB)。建議你用超級用戶(hù)啟動(dòng),因為如果以后用你的手機連接,它需要有必要的權限來(lái)訪(fǎng)問(wèn):
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進(jìn)行簽名):
1 | $ cd ~/android_proj |
2 | $ ant clean debug install |
當應用程序顯示在模擬器上,你就可以測試了。如果你打算使用手機測試,同樣可以使用上述相同的命令。
你可以使用的虛擬調試監視服務(wù)器(DDMS)調試和查看日志信息:
1 | $ ddms |
此時(shí),只要你對開(kāi)發(fā)的應用程序滿(mǎn)意,你就可以進(jìn)行簽名,并把它發(fā)布到谷歌市場(chǎng)。
首先,讓我們生成一個(gè)私鑰用于簽名:
1 | $ keytool -genkey -v -keystore app_signing.keystore -alias release \ |
2 | -keyalg RSA -keysize 2048 -validity 10000 |
JDK的 keytool 用于創(chuàng )建私鑰。
-keystore:輸出私鑰文件的名稱(chēng);
-alias:私鑰別名,可存儲多個(gè)鍵在密鑰庫用來(lái)后面使用;
設置RSA加密算法,密鑰長(cháng)度2048位和10000天的有效期。
確保生成的keystore文件非常安全,因為這谷歌市場(chǎng)對你的唯一標識。
成功生成私鑰后,我們把應用程序編譯成發(fā)布模式:
1 | $ ant clean release |
你會(huì )發(fā)現在你項目的bin目錄下,有一個(gè)apk文件:<project_name>-release-unsigned.apk(在我們的例子中是'TestAndroidProj-release-unsigned.apk')。說(shuō)明我們還沒(méi)有對先前創(chuàng )建的私鑰進(jìn)行應用程序簽名:
1 | $ jarsigner -keystore app_signing.keystore -digestalg SHA1 -sigalg MD5withRSA bin/TestAndroidProj-release-unsigned.apk release |
使用jarsigner工具簽名,keystore是先前創(chuàng )建的,同時(shí)指定簽名算法,發(fā)布Android應用程序用了keystore的別名。
讓我們來(lái)驗證一下:
1 | $ jarsigner -verify bin/TestAndroidProj-release-unsigned.apk |
你應該得到一個(gè)'jar verified' 的消息。
最后,讓我們提交生成的apk文件到Google市場(chǎng)。
1 | $ zipalign -v 4 bin/TestAndroidProj-release-unsigned.apk bin/TestAndroidProj.apk |
'4'指定apk文件使用4字節;接下來(lái)的參數是簽名后的應用文件;最后一個(gè)參數是輸出上傳到谷歌市場(chǎng)的文件。
這里唯一我們經(jīng)常使用的命令是ant clean debug install,可以避免在Eclipse運行時(shí)內存不足。
注意:如果你是一個(gè)Emacs用戶(hù),你可以使用android-mode,它已經(jīng)包含了上述命令,而且還帶有其他好的東西。
聯(lián)系客服