【问题标题】:Unable to create APK when using ProGuard使用 ProGuard 时无法创建 APK
【发布时间】:2017-10-24 17:30:25
【问题描述】:

我在尝试创建 apk 时突然开始收到 java.lang.OutOfMemoryError: GC overhead limit exceeded 错误。我不想使用增加 HeapSize 的修复程序。所以我想我会尝试使用 ProGuard,希望它会有所帮助。

但是,当我启用 proguard 时:

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

并尝试创建一个 apk,我收到以下错误:

我尝试像这样编辑“proguard-rules.pro”:

-dontwarn class com.facebook.** { *; }
-dontwarn class com.appsflyer.** { *; }
-dontwarn class org.joda.time.** { *; }

但它只是调用错误,例如:

Exception while processing task java.io.IOException: proguard.ParseException: Unknown option 'com.facebook.**' in line 2 of ...

【问题讨论】:

    标签: java android proguard android-proguard android-multidex


    【解决方案1】:

    您必须在文件 proguard-rules.pro 中指明哪些类不会被混淆,具体取决于您在项目中使用的库,例如:

    https://github.com/firebase/AndroidChat/blob/master/app/proguard-rules.proenter link description here

    不要忘记不要混淆 Web 服务的实体(请求和响应)

    【讨论】:

    • 我创建了一个名为 proguard-rules.pro 的文件并放在 android studio 的应用程序文件夹中(放置 build.gradle 的地方),并添加到文件中:-dontwarn class com.facebook.** { *; } -dontwarn class com.appsflyer.** { *; } -dontwarn class org.joda.time.** { *; } 它不幸的是没有帮助..
    【解决方案2】:

    this 一样尝试一次:

    -dontwarn com.facebook.**
    
    -dontwarn com.appsflyer.**
    
    -dontwarn org.joda.time.**
    

    【讨论】: