带有ProGuard的Android build在AGP3.2.0或更高版本中无限期运行

带有ProGuard的Android build在AGP3.2.0或更高版本中无限期运行,android,android-gradle-plugin,proguard,Android,Android Gradle Plugin,Proguard,更新到Android Gradle插件3.2.0或3.3.0-alpha13后,启用ProGuard的我的版本将继续无限期运行。 如果我回滚到AGP 3.1.4或更早版本,则构建会成功。 如果我使用-dontoptimize标志禁用优化,构建也会成功 生成类型的配置如下所示: release { minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android-opti

更新到Android Gradle插件3.2.0或3.3.0-alpha13后,启用ProGuard的我的版本将继续无限期运行。
如果我回滚到AGP 3.1.4或更早版本,则构建会成功。
如果我使用
-dontoptimize
标志禁用优化,构建也会成功

生成类型的配置如下所示:

release {
  minifyEnabled true
  useProguard true
  proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
proguard-rules.pro:

-optimizations !code/allocation/variable,!method/removal/parameter
-repackageclasses ''

-dontwarn javax.annotation.**
-dontwarn okio.**
-keepattributes Exceptions

# Crashlytics
-keepattributes SourceFile, LineNumberTable
-keepclassmembers public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
2018年11月11日:更新以包括真正的原因和解决方案

这个问题一直困扰着我,直到我无意中在OkioGithub页面上发现它

事实证明,在我的案例中,这个问题是由多种因素共同造成的:
Okio 2.1.0
+
AGP>=3.2.0
+
ProGuard(=3.3.0-alpha01,但建议使用最新版本(目前为3.3.0-beta03)

每种解决方案都有其缺点,但如果您不需要特别的v.2.1.0,最适合生产的可能是(1)使用早期的Okio版本,或者(3)禁用优化(如果您有更大的APK)

更新: 由于ProGuard的原因,该问题已被确认发生,并在其最新的beta版中得到修复。目前尚不清楚默认情况下,该版本何时会并入AGP,但您可以立即使用它,风险自负(因为它仍在beta版中):

buildscript {
    configurations.all {
        resolutionStrategy {
            force 'net.sf.proguard:proguard-gradle:6.1.0beta1'
        }
    }
}