標籤:指令碼 ant xml apk android
利用ant編譯apk。使用的時候只需要修改SKD路徑javahome路徑和project路徑就可以了。
<?xml version="1.0" encoding="UTF-8"?><project name="Scolview" default="zipalign" basedir="."><property name="exe" value=".exe" /><property name="bat" value=".bat" /><!--用到的各個工具的本地路徑,務必修改!--><!--Android_Home 本機上androidsdk的安裝目錄--><property name="android_home" value="F:/adt-bundle-windows-x86_64-20140624/sdk" /><!--對應工程的根目錄--><property name="root" value="F:/andoridADT/workspace/Scolview" /><!-- javahome 目錄 --> <property name="javahome" value="C:/Program Files/Java/jdk1.6.0_45"></property> <!-- android sdk的版本號碼,18表示Android 4.3--><property name="android_api_level" value="18"/><!-- android_sdk目錄下的android.jar包的位置--> <property name="androidjar" value="${android_home}/platforms/android-${android_api_level}/android.jar" /> <!--本機上javac的目錄--><property name="javac" value="${javahome}/bin/javac.exe" /><!--aapt用於生產R.java和打包resource資源--><property name="aapt" value="${android_home}/build-tools/18.0.1/aapt${exe}" /><!--dx用於將.class檔案(加上第三方庫和.class檔案)打包成.dex檔案--><property name="dx" value="${android_home}/build-tools/18.1.1/dx.bat" /><!--apkbuilder用於將.dex檔案和打包過的資源檔(aapt打包後的)以及其他資源檔打包成apk檔案--><property name="apkbuilder" value="${android_home}/tools/apkbuilder${bat}" /><!--zipalign用於對apk進行最佳化,非必須步驟--><property name="zipalign" value="${android_home}/tools/zipalign${exe}" /><!--打包過程中涉及到的各個檔案夾--><!--bin檔案存放apk打包所需檔案(.dex,resource.ap_,.class,AndroidManifest.xml等)和產生後的apk--><property name="out" value="${root}/dest" /><!--gen主要用於存放R.java,eclipse下為自動產生,ant下為aapt工具產生--><property name="gen" value="gen" /><!--存放javac產生的class檔案的目錄--><property name="classes" value="${out}/classes" /><!--存放.java源檔案的目錄--><property name="src" value="src"/><!--存放引用到的庫目錄--><property name="lib" value="${out}/libs"/><!--打包時候的編碼格式--><property name="encoding" value="UTF-8" /><!--產生APK的名字--><property name="file_name" value="scollview" /> <!-- 簽名倉庫,由keytool產生 --><property name="keystore" value="${root}/edsheng.keystore" /><!-- 需要設定簽名名稱--><property name="key_name" value="edsheng" /><!-- 需要設定--><property name="key_pass" value="a199210311" /><!-- 需要設定--><property name="store_pass" value="a199210311" /><!-- 簽名所用jar包的位置--><property name="jarsigner" value="${javahome}/bin/jarsigner.exe" /><!--實際編譯APK的步驟!1.清除輸出路徑的檔案(覆蓋掉原來的打包結果)2.建立需要輸出的檔案夾3.調用aapt工具產生R.java檔案4.調用javac將java檔案編譯成java位元組碼(.class檔案)5.調用dx.bat將.class檔案和其他調用到的第三方庫檔案編譯成.dex檔案(.dex檔案是可以在dalvik虛擬機器上直接運行檔案格式,可以理解為對java位元組碼做的針對嵌入式裝置的最佳化)6.調用apkbuilder工具將.dex檔案和bin目錄下的資源檔(aapt產生,如resource.ap_)打包成APK7.調用jarsigner進行前面8.調用zipalign進行效能提升--><!--下面是實際的打包過程--><!--1.清除輸出路徑的檔案(覆蓋掉原來的打包結果)--><target name="mkdir"> <echo>產生輸出檔案夾。。。</echo> <mkdir dir="${out}"></mkdir> <echo>產生完畢</echo></target><target name="clean" depends="mkdir"><echo>清理輸出目錄...</echo> <delete dir="${out}" /><delete dir="${gen}" /> <echo>清理完成</echo></target><target name="init" depends="clean"><echo>建立輸出目錄...</echo><mkdir dir="${out}" /><mkdir dir="${gen}" /><mkdir dir="${classes}" /><mkdir dir="${lib}" /><echo>建立目錄完成</echo></target><!--aapt具體參數含義見:http://blog.csdn.net/liuhe688/article/details/6679879--><!-- 為該項目資源產生R.java檔案 --><target name="gen" depends="init"><echo>從資源檔產生R.java ...</echo><exec executable="${aapt}" failonerror="true"><arg value="package" /><arg value="-m" /><arg value="-J" /><arg value="${gen}" /><arg value="-M" /><arg value="AndroidManifest.xml" /><arg value="-S" /><arg value="res" /><arg value="-I" /><arg value="${androidjar}" /></exec><echo>R.java檔案產生成功</echo></target><!--javac的具體參數含義見:http://cyf0110.iteye.com/blog/1508991--><target name="compile" depends="gen"><echo>開始編譯.class檔案...</echo><javac fork="true" executable="${javac}" encoding="${encoding}" debug="true" extdirs="" source="1.5" target="1.5" destdir="${classes}" bootclasspath="${androidjar}"> <src path="${src}" /> <src path="${gen}" /> <classpath> <fileset dir="${root}/libs" includes="*.jar" /> </classpath> </javac><echo>.class檔案編譯完成</echo></target><!--執行android的內建工具dx.bat用於將.class檔案和第三方庫打包成dex檔案--><!--apply標籤可以見:https://ant.apache.org/manual/Tasks/apply.html--><target name="dex" depends="compile"><echo>編譯.dex檔案...</echo><apply executable="${dx}" failonerror="true" parallel="true"> <arg value="-JXms1024m" /> <arg value="-JXmx1536m" /> <arg value="-JXss1024k" /><arg value="--dex" /><arg value="--num-threads=4" /><arg value="--output=${out}/classes.dex" /><arg path="${classes}" /><fileset dir="${lib}" > <include name="*.jar" /> </fileset></apply><echo>編譯.dex檔案完成</echo></target><!-- 打包項目的資源檔 --><target name="package_res_with_assets"><echo>打包資源和資產檔案...</echo><exec executable="${aapt}" failonerror="true"><arg value="package" /><arg value="-f" /><arg value="-M" /><arg value="AndroidManifest.xml" /><arg value="-S" /><arg value="res" /><arg value="-A" /><arg value="assets" /><arg value="-I" /><arg value="${androidjar}" /><arg value="-F" /><arg value="${out}/${file_name}.ap_" /></exec><echo>打包資源和資產檔案完成</echo></target><target name="apk" depends="dex, package_res_with_assets"><echo>開始打包apk...</echo><exec executable="${apkbuilder}" failonerror="true"><arg value="${out}/${file_name}_unsigned.apk" /><arg value="-u" /><arg value="-z" /><arg value="${out}/${file_name}.ap_" /><arg value="-f" /><arg value="${out}/classes.dex" /><arg value="-rf" /><arg value="${root}/src" /><arg value="-rj" /><arg value="${root}/libs" /><arg value="-nf" /><arg value="${root}/libs" /></exec><echo>成功打包apk</echo></target><!--調用jarsigner進行簽名--><target name="sign" depends="apk"><echo>開始簽名...</echo><exec executable="${jarsigner}" failonerror="true"><arg value="-verbose" /><arg value="-sigalg" /><arg value="MD5withRSA" /><arg value="-digestalg" /><arg value="SHA1" /><arg value="-keystore" /><arg value="${keystore}" /><arg value="-storepass" /><arg value="${store_pass}" /><arg value="-keypass" /><arg value="${key_pass}" /><arg value="-signedjar" /><arg value="${out}/${file_name}_signed_unzipalign.apk" /><arg value="${out}/${file_name}_unsigned.apk" /><arg value="${key_name}" /></exec><echo>簽名成功</echo></target><!-- 調用zipalign工具對簽名後的包做最佳化 --><!-- 主要是對資源做了位元組對齊的最佳化,減少記憶體運行過程中的ram--><!-- http://developer.android.com/tools/help/zipalign.html--><target name="zipalign" depends="sign"><echo>開始最佳化...</echo><exec executable="${zipalign}" failonerror="true"><arg value="-v" /><arg value="4" /><arg value="${out}/${file_name}_signed_unzipalign.apk" /><arg value="${out}/${file_name}_signed_zipaligned.apk" /></exec><echo>結束最佳化</echo><echo>清除編譯過程中產生的資料。。。</echo><delete dir="${out}/classes"> </delete><echo>清除資料完成。。。</echo></target></project>
android ant build.xml執行個體