我一直在使用Eclipse导出创建我的应用程序.apk,但我现在想使用ant构建,以便我可以自定义该过程。根据其他地方的建议,我使用“android create project”命令在临时项目中生成一个合适的build.xml文件(然后对其进行修改)。
构建时,它在程序包步骤中出现重复文件错误时失败:
-package:
[apkbuilder] Current build type is different than previous build: forced apkbuilder run.
[apkbuilder] Creating MyApp-debug-unaligned.apk and signing it with a debug key...
[apkbuilder] Found duplicate file for APK: res/drawable-mdpi/icon.png
[apkbuilder] Origin 1: /home/chris/temp/MyApp/MyApp.ap_
[apkbuilder] Origin 2: /home/chris/git/MyApp/MyApp/res/drawable-mdpi/icon.png
...
/home/chris/android-sdk-linux_x86/tools/ant/build.xml:310: com.android.sdklib.build.DuplicateFileException: Duplicate files at the same path inside the APK
我的蚂蚁属性是:
source.dir=/home/chris/git/MyApp/MyApp
out.dir=/home/chris/temp/MyApp
似乎是res目录的内容与构建期间创建的中间.ap_资源包文件之间的冲突。我不明白为什么包装会包含来自这两个来源的内容,因为重复似乎是不可避免的结果。
我原本以为这个问题是由res子目录(drawable-hdpi,drawable-ldpi,drawable-mdpi)引起的,它们都包含一个同名的文件(icon.png),但是我尝试用不同的方式命名这些并且错误仍然发生了。在任何情况下,Eclipse导出构建都会毫无问题地处理它们。
这个问题看起来很相似 Android aapt duplicate files error when building with ant但在这种情况下,该人正在创建自己的build.xml,我使用的是android sdk中提供的那个。
非常感谢任何帮助。
答案 0 :(得分:0)
我最终发现导致问题的原因,虽然不一定是原因。
在ant.properties中,
source.dir=/home/chris/git/MyApp/MyApp
应该是
source.dir=/home/chris/git/MyApp/MyApp/src
我只创建了ant.properties,因为项目处于git控制之下,我假设我需要指定输入的位置,因为它不在正常位置(在工作区内)。事实证明我并不需要这样做,因为构建足够聪明,可以从其他属性中解决。
我提供了这个以防其他人遇到同样的问题。