使用Ant構建腳本構建你的應用程序有兩種方式:一種用於測試/調試你的引用程序—debug模式—另一種用於構建你最終發布的包-release模式。無論你使用哪種方式構建你的應用程序,它必須在安裝在模擬器或者設備之前被簽名—當以debug模式構建的時候使用debug key,當以release模式構建的時候使用你自己的private key。
無論你使用debug模式或者release模式構建,你需要使用Ant工具來編譯和構建你的項目。這將創建你能安裝在模擬器或者設備上的.apk文件。當你以debug模式構建的時候,.apk文件自動通過SDK工具使用debug key簽名,所以立即能安裝在模擬器或者附加的開發設備中。當你以release模式構建的時候,這個.apk文件是沒有被簽名的,所以你必須運用Keytool和Jarsinger,使用你自己的private key手工簽名。
你閱讀並理解Signing Your Applications是非常重要的,尤其是一旦你准備發布你的應用程序和終端用戶共享它的時候。那個文檔講述了生成private key和使用它簽名你的.apk文件的過程。如果你僅僅是剛開始,可是,你能在模擬器或者你自己的開發設備上,通過以debug模式構建,快速運行你的應用程序。
如果你沒有Ant,你能從Apache Ant官網上獲取它。安裝它並確保它在你的可執行PATH。在你調用Ant之前,你需要聲明JAVA_HOME環境變量來指定JDK被安裝的路徑。
注意:當你在Windows中安裝JDK的時候,默認是安裝在“Program File”目錄中。因為空格,這個位置將會導致ant失敗。為了解決這個問題,你能像這樣指定JAVA_HOME環境變量:
[html]
set JAVA_HOME=c:\Progra~1\Java\<jdkdir>
最簡單的解決辦法,那就是,在一個沒有空格目錄下安裝JDK,例如:
[plain]
c:\java\jdk1.6.0_02
在Debug模式構建
—————————————————————————————————————————————————————————————
為了立刻測試和調試應用程序,你可以在debug模式下構建你的應用程序,並且立即在模擬器上安裝。在debug模式中,構建工具使用debug key自動簽名你的應用程序,並且使用zipalign優化包。
在debug模式下構建:
打開命令行,導航到你的項目的根目錄。
使用Ant在debug模式編譯你的應用程序:
[plain]
ant debug
這在項目的bin/目錄中創建你的調試.apk文件,名字為<your_project_name>-debug.apk,這個文件已經使用debug key簽名,並且zipalign優化。
每次你改變一個源文件或者資源,你必須再次運行Ant為了打包你的應用程序的最新版本。
為了在模擬器上安裝和運行你的應用程序,閱讀下面的章節Running on the the Emulator。
在Release模式構建
—————————————————————————————————————————————————————————————
當你准備向終端用戶分發你的應用程序的時候,你必須以release模式構建你的應用程序。一旦你完成在release模式的構建,建議對最終的.apk文件進行附加的測試和調試。
在你開始以release模式構建你的應用程序之前,注意你必須使用private key簽名你的最後應用程序包,然後使用zipalign工具優化它。以release構建這裡有兩種方式:在release模式構建一個為簽名的包,然後手工簽名並優化這個包,或者使用構建腳本簽名並優化你的包。
未簽名構建
如果你未簽名構建你的應用程序,然後你將需要手工簽名和優化這個包。
為了以release模式構建一個未簽名的.apk文件:
打開命令行,導航至你的項目的根目錄。
使用Ant在release模式下編譯你的項目:
[plain]
ant release
這樣在這個項目的bin/目錄下創建了你的Andorid應用的.apk文件,名字為<your_project_name>-unsigned.apk。
注意:注意在這個時候這個.apk文件是未簽名的,並且直到你使用你的private key簽名前不能被安裝。
一旦你創建了未簽名的.apk文件,你的下一步是使用你的private key簽名這個.apk文件,然後使用zipalign優化它。為了完成這個步驟,閱讀Signing Your Applicaitons。
當你的apk文件已經被簽名和優化的時候,它已經可以被發布給終端用戶。你應該在不同的設備或者AVD測試這個最終的構建,來確保它在不同的平台順暢運行。
簽名和優化構建
如果你想,你可以配置Android構建腳本來自動簽名和優化你的應用程序包。如果這樣做,你必須在你的項目的ant.properties文件中提供你的keystore路徑和你的key別名名稱。使用提供的這些信息,當你以release模式構建的時候,構建腳本將提示你輸入你的keystore和別名密碼,並產生你應用程序最終的包,它已經可以發布。
當心:當以Ant的方式處理輸入的時候,在構建的過程中你輸入的密碼將可見。如果你擔心你的keystore和別名密碼在屏幕中可見,那麼你可能更願意使用Jarsinger(或者相似的工具)執行手工簽名應用程序。為了執行手工的執行簽名過程,未簽名構建,然後跟著Signing Your Applications繼續。
為了指定你的keystore和alias,打開項目的ant.properties文件(在你的項目的跟目錄中尋找),並輸入key.store和key.alias實體。例如:
[plain]
key.store=path/to/my.keystore
key.alias=mykeystore
保存你的修改。現在你能在release模式構建簽名的apk:
打開命令行,導航至你的項目的根目錄。
使用Ant在release模式編譯你的項目:
[plain]
ant release
當提示,輸入你的keystore和alias密碼。
當心:如上面所描述的,你的密碼將會在屏幕中可見。
這樣在項目的bin/目錄中創建了你的Android應用程序的.apk文件,名字為<your_project_name>-release.apk。這個.apk文件已經使用了在ant.properties文件中指定的private key簽名,並使用zipalign優化。它已經可以安裝和發布。
在release模式完成構建和簽名
一旦你使用private key完成對你的應用程序的簽名,你在模擬器或者設備上安裝並運行它。你也能嘗試從web服務器上向設備上安裝它。向網站上傳這個簽名的.apk文件,然後在你的Android網頁浏覽器中加載這個.apk的URL,來下載這個應用程序並開始安裝。(在你的設備中,確保啟動Settings>Applications>Unknown sources。)
在模擬器上運行
—————————————————————————————————————————————————————————————
在你能在Android模擬器上運行你的應用程序之前,你必須Crate an AVD。
為了運行你的應用程序:
打開AVD Manager,並啟動一個虛擬設備
從你的SDK的platform-tools/目錄,使用avd選項運行android工具:
[plain]
android avd <span style="font-family:'Calibri Light',sans-serif; font-size:10pt; line-height:16px; background-color:transparent; color:windowtext"> </span>
安裝你的應用程序
從你的SDK的tools/目錄,在模擬器安裝這個.apk:
[plain]
adb install <path_to_your_bin>.apk
在你構建你的應用程序之後,你的apk文件(使用release或者debug key簽名)在你的項目bin/目錄中。
如果有超過一個模擬器在運行,你必須使用-s選項,使用它的serial number,指定在哪個模擬器安裝這個應用程序。例如:
[plain]
adb -s emulator-5554 install path/to/your/app.apk
為了查看可用的設備serial number列表,執行adb devices。
如果在模擬器上你沒有看見你的應用程序,嘗試關閉模擬器,從AVD Manager再次啟動這個虛擬設備。某些時候,當你第一次安裝應用程序,它不會出現在應用程序啟動器中,或者訪問其它應用程序。這時因為包管理器通常僅僅在模擬器啟動的時候完整檢測清單。
一定要創建多個AVD來測試你的應用程序。你應該創建為每個平台和你的應用程序兼容的屏幕類型,創建一個AVD。例如,如果你的應用程序使用Android 4.0(API Level 14)平台編譯,你應該為等於或大於4.0的每個平台和你支持的每個屏幕類型,創建一個AVD,然後在上面測試你的應用程序。
提示:如果你僅僅有一個模擬器在運行,你可以僅僅一步就構建你的應用程序並在模擬器上安裝它。導航到你的項目的根目錄,使用Ant工具編譯的install模式:ant install。這將構建你的應用程序,
在設備上運行
—————————————————————————————————————————————————————————————
更多信息請閱讀Setting up a Device for Developerment。
一旦你的設備設置完成
[plain]
adb -d install path/to/your/app.apk
-d標識指定你想使用附加的設備(在你還有一個模擬器運行的情況)。
更多關於上面使用的工具的信息,請查閱下面的文章:
android Tool
Android Emulator
Android Debug Bridge(ADB)
應用程序簽名
————————————————————————————————————————————————————————————
當你開始開發你的應用程序,明白在系統在模擬器或者設備上安裝它們之前所有的Android應用程序必須數字化簽名。這裡有兩種方式實現它:使用debug key(為了立即在模擬器或者開發設備上測試)或者使用private key(用於應用程序發布)。
Android構建工具幫助你使用debug key在構件時自動簽名你的apk文件。這意味這你能編譯並且在模擬器上安裝你的應用程序,並不需要生成一個你自己的private key。然而,請注意,如果你想發布你的應用程序,你必須使用你自己的private key簽名你的應用程序,而不是通過SDK工具生成debug key。
ADT插件幫助你在將它們安裝到模擬器和開發設備之前,快速使用debug key簽名你的apk文件。這意味著你能在沒有生成你自己的private key之前,從Eclipse中快速運行你的應用程序。沒有你需要具體執行的動作,提供的ADT已經訪問了Keytool。然而,請注意如果你想發布你的應用程序,你必須使用你的private key簽名你的應用程序,而不是使用SDK工具生成的debug key。
請閱讀Singing Your Applications,它為Android應用程序簽名提供了一個全面的指南,和它對於一個Android開發人員意味著什麼。這個文檔也包含一個使用ADT的Export Wizard導出並簽名你的應用程序指南。