Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 如何使用ANT編譯打包android項目

如何使用ANT編譯打包android項目

編輯:關於Android編程

Android本身是支持ant打包項目的,並且SDK中自帶一個build.xml文件。 通過該文件,可以對文件進行編譯、打包、安裝等。並且支持多種方式打包,如debug或者release。 一般的,可以按照如下方法進行操作:   首先創建一個Android工程。 工程創建好後,需要為工程添加ant支持,即創建相應的build.xml文件。 這個文件不需要用戶自己創建,只需要執行如下命令即可: <sdk>/tools/android update project -p <project> -t <target>   其中: sdk為sdk的安裝目錄,其下的tools/android是我們要使用的命令。 project為項目目錄。 target為項目所使用的android的target id,也就是項目對應的android的版本。   可以將sdk的tools目錄添加到環境變量 ~/.bashrc 文件中,重啟後生效,以後可以直接使用命令了。 可以通過執行以下命令查看當前sdk中所包含的target以及相應id: android list targets   比如我android tools已經配置完畢了 所以只需要打以下命令就可以了   android create project -k com.demo -a DemoActivity -t 2 -p .   這裡-k後是包名參數;-a後是項目名稱;-t後是目標項目使用SDK版本的id,-p後是目錄 . 代表全部。     如果是eclipse adt生成的android項目,可以進入到項目目錄,通過如下命令為項目增加ant支持: android update project -p . -t 2     執行完android update project命令後,會在項目的根目錄下生成相應的ant文件。 主要有build.xml、ant.properties、local.properties三個文件。 如果沒有ant.properties文件,可以自己手動添加。   其中,build.xml文件是進行ant build的主要文件,它引用了其它的文件。 在local.properties文件中定義了sdk.dir屬性,也就是當前使用的sdk的目錄。 在ant.properties文件中,可以定義自己的一些屬性,或者重定義一些屬性。 當然,這兩個屬性文件可有可無,直接定義到build.xml中也沒有關系。   在build.xml中的最後,引用了sdk目錄下的tools/ant/build.xml文件。 這個是sdk默認的build文件,可以將其內容直接拷貝過來,也可以保持當前的引用方式。 項目下的build.xml默認執行的target是help,運行後可以看到相關的幫助信息。 通過幫助信息,可以看到其它可用的target。 一般的,我們需要修改為debug或者release。 修改好之後,再運行build.xml文件,就會執行我們需要的編譯過程了。 build.xml文件的執行方法為:右鍵->Run As->Ant Build。   如果是debug版的話,默認會使用debug方式簽名。 如果是release版的話,需要指定相應的keystore以及私鑰。 否則,最後只能生成一個沒有簽名的apk文件。   設定私鑰庫的方法是,在ant.properties文件中,添加如下內容: key.store=<keystore> key.alias=<key> key.store.password=<keystore pwd> key.alias.password=<key pwd>   其中: keystore為私鑰庫文件。 key為簽名需要使用的私鑰。 key.store.password為私鑰庫的密碼。 key.alias.password為私鑰的密碼。   兩個密碼相關的屬性也可以不添加,而只添加私鑰庫及私鑰。 這樣的話,執行時會依次彈出相應的輸入框,提示用戶輸入相應的密碼。 這樣雖然相對繁瑣,但是由於沒有明文指定密碼,對私鑰庫的保護會更好一些。   如果項目引用了第三方庫的話,只需要在項目根目錄創建libs文件夾並將其放入即可。 如果是jar庫,直接放到libs目錄下;如果是so庫,需要放到libs的名為armeabi的子目錄下。 也可以通過設定相應的屬性來指定第三方庫的位置,其默認都是libs文件夾。 jar.libs.dir為jar類型庫所在的目錄。 native.libs.absolute.dir為so類型庫所在的目錄,即armeabi的父目錄。   如果項目包含了jni代碼,希望在打包時自動重新編譯so庫,可以修改build.xml文件。 修改方法為,在引用sdk的build.xml文件之前添加如下target: <target name="-pre-build" depends="-ndk-build"> </target> <target name="-ndk-build">     <exec executable="ndk-build" failonerror="true">         <arg value="clean" />     </exec>     <exec executable="ndk-build" failonerror="true" /> </target>   ndk-build為ndk提供的命令,需要將ndk安裝目錄添加到環境變量中,添加方法同sdk/tools。 生成的so默認會放到libs/armeabi目錄下。   使用默認的build.xml打包apk時,已經包含了混淆、簽名、對齊優化等相關過程。 如果是使用release的方式,最後生成的apk文件已經可以直接發布了。   遺留問題: 目前采用這種方法生成的APK,雖然已經被簽名了,但是,安裝時錯誤,提示未簽名。 查看APK包中的簽名文件,不是默認的CERT.*,而是<key>.*。 然後,即使將名稱修改成CERT.*,程序仍然不能正常安裝。 如果導出debug版本,則不會有這個問題。 用ADT插件導出簽名APK,也不會有這個問題。   解決方法: 產生此問題的根本原因是JDK1.7造成的,只有運行Ant使用jre1.7的版本時,才會發生該問題。 可以通過設置運行build.xml文件時使用的jre版本來解決,具體方法是: 選中build.xml->右鍵->Run As->External Tools Configurations, 在右側區域選中JRE標簽頁,可以看到對jre設定有三個選項: Run in the same JRE as the workspace使用與workspace相同版本的jre。 Execution environment根據相關環境選擇一個jre版本。 Separate JRE使用一個已經安裝的jre的當前版本。 一般項目的jre都會設定為1.7以下的版本,所以建議選擇第一個,使其與項目設定保持一致即可。  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved