为什么只有在设置android:debuggable =“false”时才构建发布APK失败?

时间:2013-12-06 00:18:09

标签: android scala ant proguard

最近,Google Play商店似乎强制要求所有上传的应用必须在android:debuggable="false"文件中设置AndroidManifest.xml。我以前设置了android:debuggable="true"

但是,当我android:debuggable="false" ant clean release -obfuscate: /usr/local/Cellar/android-sdk/r21.1/tools/ant/build.xml:875: Can't write [/Users/-/Code/android/bin/proguard/obfuscated.jar] (Can't read [/Users/-/Code/android/libs/android-async-http-1.4.3-no-redirect.jar] (Duplicate zip entry [com/a/a/a/b.class == android-async-http-1.4.3-no-redirect.jar:com/loopj/android/http/AsyncHttpClient$1.class])) 时,我android:debuggable="true"就会爆炸。

ProGuard似乎是罪魁祸首:

android:debuggable="false"

有关如何进行的任何指导?使用ant clean release与使用{{1}}的发布版本进行发布构建时,混淆步骤中的哪些更改?

其他一些细节:

  • 做标准{{1}}
  • 项目实际上是用Scala编写的
  • 使用17级构建工具
  • ProGuard 4.4

1 个答案:

答案 0 :(得分:0)

原来我在proguard-project.txt中包含了一些第三方库,如此:

-injar "libs/android-async-http-1.4.3-no-redirect.jar"

我删除了所有-injar个库,并使用post-compile任务替换了我的build.xmldebug-obfuscation-check中的proguard <target name="-debug-obfuscation-check"> <property name="proguard.enabled" value="true" /> <path id="out.dex.jar.input.ref" /> </target> 步骤:

-injars

仍然不确定发生了什么。显然在proguard中使用{{1}}库是一种非常糟糕的做法(根据ProGuard手册)。我把所有其他事情归咎于使用scala进行android项目的麻烦。