標籤:des undle 覆蓋 orm 虛擬 編碼格式 ges and source
利用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="${root}/libs" > <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執行個體