gpt4 book ai didi

使用 ProGuard 构建的 Android 可以无限期地运行 AGP 3.2.0 或更高版本

转载 作者:行者123 更新时间:2023-11-29 23:30:31 25 4
gpt4 key购买 nike

更新到 Android Gradle Plugin 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.**

最佳答案

11/11/2018:已更新以包含真正的原因和修复

这个问题一直困扰着我,直到我无意中发现了 this issue在 Okio GitHub 页面上。

事实证明,在我的案例中,这个问题是由多种因素共同引起的:
Okio 2.1.0 + AGP >= 3.2.0 + ProGuard (<6.1.0-beta1) with optimizations = Infinite execution of optimization step (build never finishes)

如果你从这个等式中去掉任何部分,一切都会正常。

可能的解决方案详情:

  1. 使用 Okio 2.0.0 或 1.x.x。
  2. 坚持使用 AGP 3.1.4 或更早版本。
  3. 使用 -dontoptimize 禁用优化在您的 ProGuard 配置中标记。
  4. 使用 R8 代替 ProGuard:
    • 对于 AGP 3.2.x:添加 android.enableR8=true到你的 gradle.properties。
    • 对于 AGP3.3.x:默认启用 R8。 注意:您可以使用任何 >= 3.3.0-alpha01 的 AGP,但建议使用最新版本(目前为 3.3.0-beta03)。

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

更新:该问题已确认因 ProGuard 而发生,并已在其最新的测试版中得到修复。目前尚不清楚此版本何时会默认合并到 AGP 中,但您现在可以使用它,后果自负(因为它仍处于测试阶段):

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

关于使用 ProGuard 构建的 Android 可以无限期地运行 AGP 3.2.0 或更高版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52773957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com