繁体   English   中英

为什么仅在设置了android:debuggable =“ false”的情况下构建发布APK失败?

[英]Why does building a release APK fail only when android:debuggable=“false” is set?

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

但是,当我设置android:debuggable="false"我的ant clean release-obfuscate:步骤中-obfuscate:

ProGuard似乎是罪魁祸首:

/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"进行发布构建与使用android:debuggable="false"进行发布构建时,混淆步骤有什么变化?

一些其他细节:

  • 进行标准的ant clean release
  • 该项目实际上是用Scala编写的
  • 使用17级构建工具
  • ProGuard 4.4

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

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

我删除了所有-injar库,并用debug-obfuscation-check任务替换了我的ant build.xml的proguard post-compile步骤:

<target name="-debug-obfuscation-check">
 <property name="proguard.enabled" value="true" />
 <path id="out.dex.jar.input.ref" />
</target>

仍然不确定发生了什么。 显然,在-injars对库使用-injars是非常糟糕的做法(根据ProGuard手册)。 我将其他一切归咎于将scala用于Android项目的麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM