Flutter:任务“:app:transformClassesAndResourcesWithProguardForRelease”执行失败

Posted

技术标签:

【中文标题】Flutter:任务“:app:transformClassesAndResourcesWithProguardForRelease”执行失败【英文标题】:Flutter: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' 【发布时间】:2021-02-06 13:52:03 【问题描述】:

每当我尝试运行 flutter build appbundle 时,我都会收到错误消息。

这是终端中显示的错误消息:

Warning: there were 10 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> java.io.IOException: Please correct the above warnings first.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2m 2s

不知道这意味着什么。有什么想法吗?

【问题讨论】:

这能回答你的问题吗? transformClassesAndResourcesWithProguardForRelease FAILED 嗨@Akif 谢谢你的评论。我之前找到了那个答案,但我不知道在哪里可以找到 proGuard 规则,以便我可以添加它建议的代码行。你知道proGuard规则在android studio中的位置吗? 【参考方案1】:

我希望您现在已经解决了这个问题,但想留下一个答案以供将来参考:

    在 app 文件夹中创建一个名为 proguard-rules.pro 的文件(项目目录 -> android -> app -> proguard-rules.pro) 在文件里面,写
-keep class io.flutter.app.**  *; 
-keep class io.flutter.plugin.**   *; 
-keep class io.flutter.util.**   *; 
-keep class io.flutter.view.**   *; 
-keep class io.flutter.**   *; 
-keep class io.flutter.plugins.**   *; 
-ignorewarnings
    更新build.gradle (project dir -> android -> app -> build.gradle) 将此行添加到buildTypes 块:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

来自 build.gradle 的示例代码段:

defaultConfig 
        applicationId "com.company.appname"
        minSdkVersion 23
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    

    signingConfigs 
        release 
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        
    

    buildTypes 
        release 
            signingConfig signingConfigs.release
            shrinkResources true
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

然后运行flutter build appbundleflutter build apk --split-per-abi 应该不会导致任何问题。

【讨论】:

我不敢相信这在文档中找不到。今天是我尝试创建apk的第二天,最后这个答案已经解决了。谢谢!

以上是关于Flutter:任务“:app:transformClassesAndResourcesWithProguardForRelease”执行失败的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:任务':app:compileDebugKotlin'的执行失败

任务':app:compressDebugAssets'的Flutter执行失败

Flutter - 任务':connectivity:compileDebugJavaWithJavac'的执行失败

任务':app:mergeDebugResources'的Flutter构建失败

任务':app:processDebugManifest'的Flutter执行失败

如何在 Flutter 创建一个后台任务