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