分享

android使用ANT打包,签名,混淆

 w_hf的图书馆 2011-09-26

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. <?xml version="1.0" encoding="GBK"?>
  2. <!-- 步骤
  3. 1.用aapt生成R.java
  4. 2.JAVAC编译JAVA文件
  5. 3.批处理生成classes.dex
  6. 4.aapt打包资源
  7. 5.apkbuilder包资源和类文件为APK文件
  8. 6.jarsinger 对APK进行签名-->
  9. <project name="MyJbox2D" default="zipalign" basedir=".">
  10. <property file="local.properties" />
  11. <property name="jbox2dlib" value="D:/workspace/MyJbox2D/lib" />
  12. <!-- 定义自己的输出目录 -->
  13. <property name="outdir" value="outdir" />
  14. <property name="out.absolute.dir" location="${outdir}" />
  15. <!-- 定义 R.java 所有目录 -->
  16. <property name="outdir-gen" value="gen" />
  17. <!-- 读取目录 -->
  18. <property name="resource-dir" value="res" />
  19. <property name="asset-dir" value="assets" />
  20. <property name="src-dir" value="src" />
  21. <property name="src-dir-ospath" value="${basedir}/${src-dir}" />
  22. <!-- 输出目录 -->
  23. <property name="outdir-classes" value="${outdir}/classes" />
  24. <property name="out.classes.absolute.dir" location="${outdir-classes}" />
  25. <!-- 临时类资源文件 -->
  26. <property name="dex-file" value="classes.dex" />
  27. <property name="intermediate-dex" value="${out.absolute.dir}/${dex-file}" />
  28. <!-- 最终生成文件 -->
  29. <property name="out-package" value="${outdir}/${ant.project.name}.apk" />
  30. <!-- 要使用的工具 -->
  31. <property name="aapt" value="${sdk-platform-tools}/aapt.exe" />
  32. <property name="aidl" value="${sdk-platform-tools}/aidl.exe" />
  33. <property name="dx" value="${sdk-platform-tools}/dx.bat" />
  34. <property name="adb" value="${sdk-tools}/adb" />
  35. <property name="apk-builder" value="${sdk-tools}/apkbuilder.bat" />
  36. <property name="android-jar" value="${sdk-platform}/android.jar" />
  37. <!-- 最终生成各种包文件 -->
  38. <property name="resources-package" value="${outdir}/${ant.project.name}" />
  39. <property name="resources-package-ospath" value="${basedir}/${resources-package}" />
  40. <property name="out-unsigned-package" value="${outdir}/${ant.project.name}-unsigned.apk" />
  41. <property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" />
  42. <property name="out-signed-package" value="${outdir}/${ant.project.name}-signed.apk" />
  43. <property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" />
  44. <property name="zipalign-package-ospath" value="${basedir}/${outdir}/${ant.project.name}_release.apk" />
  45. <!--签名工具-->
  46. <property name="jarsigner" value="${jdk-home}/bin/jarsigner.exe" />
  47. <!--优化APK工具-->
  48. <property name="zipalign" value="${sdk-tools}/zipalign.exe" />
  49. <!-- 初始化 -->
  50. <target name="init">
  51. <echo>Creating all output directories </echo>
  52. <delete dir="${outdir}" />
  53. <delete dir="${outdir-classes}" />
  54. <delete dir="${outdir-gen}" />
  55. <mkdir dir="${outdir}" />
  56. <mkdir dir="${outdir-classes}" />
  57. <mkdir dir="${outdir-gen}" />
  58. </target>
  59. <!--步骤 1: aapt生成R.java -->
  60. <target name="resource-src" depends="init">
  61. <echo>Generating R.java...</echo>
  62. <exec executable="${aapt}" failonerror="true">
  63. <arg value="package" />
  64. <arg value="-m" />
  65. <arg value="-J" />
  66. <arg value="${outdir-gen}" />
  67. <arg value="-M" />
  68. <arg value="AndroidManifest.xml" />
  69. <arg value="-S" />
  70. <arg value="${resource-dir}" />
  71. <arg value="-I" />
  72. <arg value="${android-jar}" />
  73. </exec>
  74. </target>
  75. <!-- Generate java classes from .aidl files. -->
  76. <target name="aidl" depends="init">
  77. <echo>Compiling aidl files into Java classes...</echo>
  78. <apply executable="${aidl}" failonerror="true">
  79. <arg value="-p${android-framework}" />
  80. <arg value="-I${src-dir}" />
  81. <fileset dir="${src-dir}">
  82. <include name="**/*.aidl" />
  83. </fileset>
  84. </apply>
  85. </target>
  86. <!-- 步骤 2. 编译所有class文件. -->
  87. <target name="compile" depends="init, resource-src, aidl">
  88. <unjar src="${jbox2dlib}/jbox2d.jar" mce_src="${jbox2dlib}/jbox2d.jar" dest="${outdir-classes}" />
  89. <javac encoding="GBK" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" />
  90. </target>
  91. <!-- 混淆代码-->
  92. <target name="proguard" depends="compile">
  93. <jar basedir="${outdir-classes}" destfile="temp.jar" />
  94. <java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">
  95. <jvmarg value="-Dmaximum.inlined.code.length=32" />
  96. <arg value="-injars temp.jar" />
  97. <arg value="-outjars optimized.jar" />
  98. <arg value="-libraryjars ${android-jar}" />
  99. <arg value="-dontpreverify" />
  100. <arg value="-dontoptimize" />
  101. <arg value="-dontusemixedcaseclassnames" />
  102. <arg value="-repackageclasses ''" />
  103. <arg value="-allowaccessmodification" />
  104. <!-- 要保留自己的主ACTIVITY类 -->
  105. <arg value="-keep public class com.jbox2d.demo.MyActivity" />
  106. <arg value="-optimizationpasses 7" />
  107. <arg value="-verbose" />
  108. <arg value="-dontskipnonpubliclibraryclasses" />
  109. <arg value="-dontskipnonpubliclibraryclassmembers" />
  110. </java>
  111. <delete file="temp.jar" />
  112. <delete dir="${outdir-classes}" />
  113. <mkdir dir="${outdir-classes}" />
  114. <unzip src="optimized.jar" mce_src="optimized.jar" dest="${outdir-classes}" />
  115. <delete file="optimized.jar" />
  116. </target>
  117. <!-- 步骤 3. 转换class文件为dex文件. -->
  118. <target name="dex" depends="proguard">
  119. <echo>Converting compiled files into ${intermediate-dex}... </echo>
  120. <exec executable="${dx}" failonerror="true">
  121. <arg value="--dex" />
  122. <arg value="--output=${intermediate-dex}" />
  123. <arg path="${out.classes.absolute.dir}" />
  124. </exec>
  125. </target>
  126. <!-- 步骤 4. 将资源和清单打包. -->
  127. <target name="package-res-and-assets">
  128. <echo>Packaging resources and assets...</echo>
  129. <exec executable="${aapt}" failonerror="true">
  130. <arg value="package" />
  131. <arg value="-f" />
  132. <arg value="-M" />
  133. <arg value="AndroidManifest.xml" />
  134. <arg value="-S" />
  135. <arg value="${resource-dir}" />
  136. <arg value="-A" />
  137. <arg value="${asset-dir}" />
  138. <arg value="-I" />
  139. <arg value="${android-jar}" />
  140. <arg value="-F" />
  141. <arg value="${resources-package}" />
  142. </exec>
  143. </target>
  144. <!-- 步骤 5. 将打好的包编译为APK文件. -->
  145. <target name="debug" depends="dex, package-res-and-assets">
  146. <echo>release:Packaging ${out-debug-package-ospath}, and signing it with a debug key...</echo>
  147. <exec executable="${apk-builder}" failonerror="true">
  148. <arg value="${out-unsigned-package-ospath}" />
  149. <arg value="-u" />
  150. <arg value="-z" />
  151. <arg value="${resources-package-ospath}" />
  152. <arg value="-f" />
  153. <arg value="${intermediate-dex}" />
  154. <arg value="-rf" />
  155. <arg value="${src-dir-ospath}" />
  156. </exec>
  157. </target>
  158. <!--步骤 6. 签名APK文件 -->
  159. <target name="jarsigner" depends="debug">
  160. <echo> jarsigner ${out-signed-package-ospath}</echo>
  161. <exec executable="${jarsigner}" failonerror="true">
  162. <arg value="-verbose" />
  163. <arg value="-storepass" />
  164. <arg value="${keypass}" />
  165. <arg value="-keystore" />
  166. <arg value="${keystore}" />
  167. <arg value="-signedjar" />
  168. <arg value="${out-signed-package-ospath}" />
  169. <arg value="${out-unsigned-package-ospath}" />
  170. <arg value="${key}" />
  171. </exec>
  172. </target>
  173. <!--zipalign优化android程序-->
  174. <target name="zipalign" depends="jarsigner">
  175. <echo> zipalign ${zipalign-package-ospath}</echo>
  176. <exec executable="${zipalign}" failonerror="true">
  177. <arg value="-v" />
  178. <arg value="-f" />
  179. <arg value="4" />
  180. <arg value="${out-signed-package-ospath}" />
  181. <arg value="${zipalign-package-ospath}" />
  182. </exec>
  183. </target>
  184. <!-- 安装到默认的手机或模拟器-->
  185. <target name="install" depends="zipalign">
  186. <echo>Installing ${out-debug-package} onto default emulator...</echo>
  187. <exec executable="${adb}" failonerror="true">
  188. <arg value="install" />
  189. <arg value="${out-signed-package}" />
  190. </exec>
  191. </target>
  192. </project>
好久没有写BLOG了,哈哈,本人有点小懒加上家里也没有网络,昨天学习了下ANT打包部署,在网上查了下资料综合了一下,于是有了

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约