Flutter file_picker插件无法构建项目

Posted

技术标签:

【中文标题】Flutter file_picker插件无法构建项目【英文标题】:Flutter file_picker plugin can't build project 【发布时间】:2020-12-25 09:42:12 【问题描述】:

将 file_picker: ^1.13.3 添加到我的依赖项后,项目无法构建并出现此错误

FAILURE:构建失败并出现异常。

出了什么问题: 任务“:app:mergeDebugJavaResource”执行失败。

执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障 文件 'com.android.builder.files.ZipCentralDirectory@7dfb72cd' 已删除,但在缓存中找不到以前的版本

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

在 1m 8s 内构建失败 异常:Gradle 任务 assembleDebug 失败,退出代码为 1

但是每次我删除它时项目都会成功构建,请帮助我尝试了各种建议的版本,但都无济于事

这是所要求的 android 清单

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app.www.app">
   <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="finosellapp"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
          
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
          
            <meta-data
              android:name="io.flutter.embedding.android.SplashScreenDrawable"
              android:resource="@drawable/launch_background"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

【问题讨论】:

显示 android>app>source>main>Android Manifest.xml @AmonChowdhury 我已经用 Android Manifest 更新了问题,请重新检查谢谢 【参考方案1】:

由于 file_picker 目前不支持范围存储,您需要在 AndroidManifest.xml 文件中设置android:requestLegacyExternalStorage="true",位于:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app.www.app">
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="finosellapp"
        android:requestLegacyExternalStorage="true"
        android:icon="@mipmap/ic_launcher">
       
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">

            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme"
                />

            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/launch_background"
                />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

【讨论】:

如果有效,请将其设置为正确答案。它也会帮助其他开发者。 你有什么问题? @LizardKing_96 构建失败可能是由于插件中的 AndroidX 不兼容。该工具即将尝试使用Jetfier解决不兼容问题。构建插件 file_picker... 我按照问题页面给出的说明进行操作,但没有帮助。 flutter.dev/docs/development/androidx-migration 这可能是另一种情况。使用 AndroidX 和不使用 AndroidX 时有不同的设置。在这里提出问题和评论,我会尽力提供帮助。【参考方案2】:

添加: AndroidManifest.xml 中的 android:requestLegacyExternalStorage="true"

添加: 你的 android 中的类路径 'com.android.tools.build:gradle:3.6.3' -> build.gradle

ebuildscript 
    dependencies 
        classpath 'com.android.tools.build:gradle:3.6.3'
    

添加: distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip 在你的 gradle-wrapper.properties

创建一个文件'proguard-rules.pro'并写入: -keep class androidx.lifecycle.** *;

在你的 android -> 应用 -> build.gradle 添加:

android
    buildTypes 
       release
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
       
    

``

【讨论】:

【参考方案3】:

将此添加到您的 Android 清单文件中

android:requestLegacyExternalStorage="true" 

然后在文件选择器build.gradle 文件中将应用程序compileSdkVersion 更改为28。要获取此文件,您要求在右上角的 andriod 文件夹中打开 MainActivity.class 文件 Open for Editing android studio 点击它作为新的 android 项目打开。然后选择文件文件选择器build.gradle文件。

希望这对你有帮助。

过去 5 天我一直在为这个问题苦苦挣扎,现在只有我解决了。

【讨论】:

以上是关于Flutter file_picker插件无法构建项目的主要内容,如果未能解决你的问题,请参考以下文章

Flutter-选择附件,图片,视频。file_picker

Flutter file_picker 包为所有文件详细信息提供空值

Flutter - 无法构建插件 firebase_core

无法构建插件flutter_plugin_android_lifecycle

颤振:失败:构建失败并出现异常

使用 .aar 模块的 Flutter 插件在示例应用程序中构建和运行良好,但无法在其他应用程序中构建