我想在使用Android Eclipse ADT插件的同时自定义构建过程

前端之家收集整理的这篇文章主要介绍了我想在使用Android Eclipse ADT插件的同时自定义构建过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
安装ADT插件后,以下构建器对于 Android项目处于活动状态:

> Android资源管理器
> Android预编译器
> Java Builder
> Android Package Builder

查看输出目录,将创建以下工件:

> resources.ap_(只是一个资源没有代码的APK / ZIP)
> gen / R.java(自动生成的资源列表)
> .class文件,带有java字节码
> classes.dex
> ${project-name} .apk

对于我的项目,我自动生成了几个代码工件,并且通常需要更严格地控​​制构建过程.首先,我认为资源管理器负责创建resources.ap_,预编译器创建了R.java,java builder显而易见,然后Android Package Builder创建了classes.dex,然后组合了classes.dex和resources.ap_创建APK文件.

我禁用了前两个步骤,并创建了一个自定义预构建器,它构建了一个resources.ap_副本,认为这是等效的.没有这样的运气.

不幸的是,最终的Android Package Builder似乎直接从res /中啜饮了资源而忽略了我的resources.ap_.实际上,除了生成R.java之外,前两个构建步骤似乎没有做太多.

这是它真正成问题的地方.如果我禁用最后的构建步骤并放下我自己的APK文件(具有完全相同的名称),我会收到以下错误

  1. [2011-02-27 20:25:28 - android-premium] ------------------------------
  2. [2011-02-27 20:25:28 - android-premium] Android Launch!
  3. [2011-02-27 20:25:28 - android-premium] adb is running normally.
  4. [2011-02-27 20:25:28 - android-premium] Could not find android-premium.apk!

所以我陷入困境:使用Android Package Builder(没有可辨别的配置),我必须提供单独的./res/文件.没有它,我无法让项目在设备上启动(而不是从Eclipse).

在这个领域,任何人都有更好的想法/经验吗?

解决方法

关于Ant脚本,以下是我用于构建Android应用程序的Ant步骤的一体化模板(这可能对尝试将Eclipse构建转换为Ant的其他人有用,因为它比不透明版本更简单,更透明用android工具自动生成):
  1. <property name="workspace.dir" value="/workspace" />
  2. <property name="project.dir" location="." />
  3. <property name="android-platform.name" value="android-1.5" />
  4.  
  5.  
  6. <!-- Framework Paths -->
  7. <property name="android-sdk.dir" value="${workspace.dir}/EpicFramework/android-sdk"/>
  8. <property name="android-tools.dir" value="${android-sdk.dir}/tools" />
  9. <property name="android-platform.dir" value="${android-sdk.dir}/platforms/${android-platform.name}" />
  10. <property name="android-platform-tools.dir" value="${android-platform.dir}/tools"/>
  11. <property name="android-platform-jar" value="${android-platform.dir}/android.jar"/>
  12. <property name="android-framework-src.dir" value="${workspace.dir}/EpicFramework/EpicAndroid"/>
  13.  
  14. <!-- Tool Binaries -->
  15. <property name="adb" value="${android-tools.dir}/adb"/>
  16. <property name="apkbuilder" value="${android-tools.dir}/apkbuilder"/>
  17. <property name="aapt" value="${android-platform-tools.dir}/aapt"/>
  18. <property name="dx" value="${android-platform-tools.dir}/dx"/>
  19.  
  20. <!-- Project Paths -->
  21. <property name="src.dir" value="${project.dir}/src" />
  22. <property name="gen.dir" value="${project.dir}/gen" />
  23. <property name="res.dir" value="${project.dir}/res" />
  24. <property name="lib.dir" value="${project.dir}/lib" />
  25. <property name="build.dir" value="${project.dir}/bin" />
  26. <property name="build.classes.dir" value="${build.dir}/classes" />
  27.  
  28. <property name="resources.file" value="${build.dir}/resources.ap_"/>
  29. <property name="dex.file" value="${build.dir}/classes.dex" />
  30. <property name="debug-apk.file" value="${build.dir}/${ant.project.name}-debug.apk"/>
  31.  
  32.  
  33. <target name="dirs">
  34. <echo>Creating output directories if needed...</echo>
  35. <mkdir dir="${res.dir}" />
  36. <mkdir dir="${gen.dir}" />
  37. <mkdir dir="${lib.dir}" />
  38. <mkdir dir="${build.dir}" />
  39. <mkdir dir="${build.classes.dir}" />
  40. </target>
  41.  
  42. <target name="android-resource-src" depends="dirs">
  43. <echo>Generating R.java from the resources...</echo>
  44. <exec executable="${aapt}" failonerror="true">
  45. <arg value="package" />
  46. <arg value="-M" />
  47. <arg path="AndroidManifest.xml" />
  48. <arg value="-S" />
  49. <arg path="${res.dir}" />
  50. <arg value="-I" />
  51. <arg path="${android-platform-jar}" />
  52. <arg value="-m" />
  53. <arg value="-J" />
  54. <arg path="${gen.dir}" />
  55. </exec>
  56. </target>
  57.  
  58. <target name="android-compile" depends="android-resource-src">
  59. <echo>Compiling java files into class files...</echo>
  60. <javac
  61. encoding="ascii"
  62. target="1.5"
  63. debug="true"
  64. extdirs=""
  65. destdir="${build.classes.dir}"
  66. includeAntRuntime="false"
  67. bootclasspath="${android-platform-jar}">
  68. <src path="${android-framework-src.dir}" />
  69. <src path="${src.dir}" />
  70. <src path="${gen.dir}" />
  71. <classpath>
  72. <fileset dir="${lib.dir}" includes="*.jar"/>
  73. </classpath>
  74. </javac>
  75. </target>
  76.  
  77. <target name="android-dex" depends="android-compile">
  78. <echo>Converting compiled files and 3rd party libraries into ${dex.file} ...</echo>
  79. <apply executable="${dx}" failonerror="true" parallel="true">
  80. <arg value="--dex" />
  81. <arg value="--output=${dex.file}" />
  82. <arg path="${build.classes.dir}" />
  83. <fileset dir="${lib.dir}" includes="*.jar"/>
  84. </apply>
  85. </target>
  86.  
  87. <target name="android-package-resources">
  88. <echo>Packaging Android resources into ${resources.file} ...</echo>
  89. <exec executable="${aapt}" failonerror="true">
  90. <arg value="package" />
  91. <arg value="-M" />
  92. <arg path="AndroidManifest.xml" />
  93. <arg value="-S" />
  94. <arg path="./res" />
  95. <arg value="-I" />
  96. <arg path="${android-platform-jar}" />
  97. <arg value="-f" />
  98. <arg value="-F" />
  99. <arg value="${resources.file}" />
  100. </exec>
  101. </target>
  102.  
  103. <target name="android-debug" depends="android-dex,android-package-resources">
  104. <echo>Packaging app and signing it with the debug key</echo>
  105. <exec executable="${apkbuilder}" failonerror="true">
  106. <arg value="${debug-apk.file}" />
  107. <arg value="-d" />
  108. <arg value="-z" />
  109. <arg value="${resources.file}/" />
  110. <arg value="-f" />
  111. <arg value="${dex.file}" />
  112. </exec>
  113. </target>
  114.  
  115. <target name="android-release" depends="android-dex,android-package-resources">
  116. <echo>Packaging App without signing,so that it can be signed with the official publishing key ...</echo>
  117. <exec executable="${apkbuilder}" failonerror="true">
  118. <arg value="${release-apk.file}" />
  119. <arg value="-u" />
  120. <arg value="-d" />
  121. <arg value="-z" />
  122. <arg value="${resources.file}/" />
  123. <arg value="-f" />
  124. <arg value="${dex.file}" />
  125. </exec>
  126. <echo>All generated packages need to be signed with jarsigner before they are published.</echo>
  127. </target>
  128.  
  129. <target name="android-install" depends="android-debug">
  130. <echo>Removing all com.epicapplications APK files from default emulator ...</echo>
  131. <exec executable="${adb}" inputstring="echo hi; rm -f /data/app/com.epicapplications.*; exit;
  132. ">
  133. <arg value="shell"/>
  134. </exec>
  135. <echo>Installing ${debug-apk.file} onto default emulator...</echo>
  136. <exec executable="${adb}" failonerror="true">
  137. <arg value="install" />
  138. <arg value="-r" />
  139. <arg path="${debug-apk.file}" />
  140. </exec>
  141. </target>

我正在寻找的是能够使用这个Ant构建脚本的全部或片段,但仍然有Eclipse集成来启动和调试应用程序.

猜你在找的Android相关文章