Android 什么';在这种情况下使用Proguard进行签名有什么问题? 背景
最近我开发了一个新应用程序,当我试图生成一个签名的APK时,我注意到一个奇怪的行为:Android 什么';在这种情况下使用Proguard进行签名有什么问题? 背景,android,android-studio,apk,proguard,Android,Android Studio,Apk,Proguard,最近我开发了一个新应用程序,当我试图生成一个签名的APK时,我注意到一个奇怪的行为: 项目文件夹中的任何位置都没有映射文件 在gradle文件中启用最小化标志(“minifyEnabled”和“shrinkResources”)时,显示了一个错误: 错误:任务的执行失败 “:app:transformClassesAndResourcesWithProguardForRelease” 作业失败,有关详细信息,请参阅日志 问题 问题是,我没有向项目添加任何可能导致Proguard规则不起作用的
- 项目文件夹中的任何位置都没有映射文件
- 在gradle文件中启用最小化标志(“minifyEnabled”和“shrinkResources”)时,显示了一个错误:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0-rc1'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
maven {
url 'https://dl.bintray.com/baole/maven'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这里也没什么特别的
我试过的
我还尝试将该项目与我的另一个项目进行比较,该项目与Proguard没有任何问题,但我找不到它们之间的任何特殊区别
问题
为什么当我在应用程序上签名时Proguard不能开始工作?我应该怎么做才能使特殊标志也起作用?可能是app.gradle中的某些依赖项导致了这种情况,因为无法导入或引用类。您可以在“错误:任务执行失败”:app:transformClasseSandreSourceWithProguardForRelease.”行之前/之后看到导入或引用错误。这个问题的解决方案不是通过修改proguard规则来缩小这种依赖关系,就像这样
-keep class com.itextpdf.** { *; }
-dontwarn com.itextpdf.**
是一个类似的问题。我在proguard文件中找到了导致它的原因:
-keep class com.google.android.gms.** { ; }
解决办法是:
-keep class com.google.android.gms.** { *; }
但是一个非常类似的项目已经启用了那些没有任何问题的项目。另外,即使它们被禁用,我也看不到映射文件,我认为这意味着proguard没有在allok中混淆它是一个proguard文件问题。我想我已经修复了它(创建了映射文件)。你能告诉我你觉得怎么样吗?这是正确的。如果这对你有帮助,别忘了投赞成票:)它没有帮助。但是,由于它是相似的,我将给它+1.5%的票数作为领先小姐的头衔。签约对职业后卫没有任何作用。如果在调试版本上启用Proguard,您可能会遇到这个问题。@默认情况下,Alpha签名使用Proguard。实际上,问题是Proguard规则有一行错误的代码,我从我使用的一个库中复制了它。所有我认为引起问题的事情都没问题。只有Proguard规则不适用。无论如何,我现在将更新标题。将我的投票更新为upvote@Alpha对不起,谢谢你。我只是对这个问题的原因感到困惑,结果发现我找错了地方,有一个非常简单的解决方法。
-keep class com.google.android.gms.** { *; }