无法将 Flutter 项目迁移到 AndroidX
Posted
技术标签:
【中文标题】无法将 Flutter 项目迁移到 AndroidX【英文标题】:Unable to migrate Flutter project to AndroidX 【发布时间】:2019-06-21 01:43:32 【问题描述】:我在 android Studio 中有一个 Flutter 项目。我计划迁移到 AndroidX。每当我执行 Refactor -> Migrate to AndroidX 时,Android Studio 都会显示错误消息:
您需要在模块 build.gradle 中将 compileSdk 设置为至少 28 才能迁移到 AndroidX。
但是我已经在我的 app/gradle.build 文件中设置了 compileSdkVersion 28。
我还有什么需要做的吗?
【问题讨论】:
【参考方案1】:我能够解决我的问题:
-
在 Android Studio 中打开 Flutter 项目
右键android目录,点击Flutter -> Open Android module in Android Studio。它要求我升级我的 gradle 插件。
然后我安装了 Google Play 服务。工具 -> SDK 管理器 -> SDK 工具并检查 Google Play 服务。
安装 Google Play 服务后,我进行了重构 -> 迁移到 AndroidX。 它开始工作了。
注意:从您在步骤 2 中打开的项目窗口中进行重构。
【讨论】:
我试过了,但是我的“Flutter”菜单声音被禁用了,我不知道如何打开“Open Android”菜单声音。 @GiacomoMasseroniChiaro 我也有同样的问题imgur.com/2C4EnIH你运气好吗?它适用于 ios 模块 @GiacomoMasseroniChiaro 如果你想关注github.com/flutter/flutter/issues/28791,我已经在 Flutter 存储库中提出了这个问题 @Jerry 我在工具 -> Flutter 中没有这样的条目 是的,它成功了。还要添加一件事 - 有时需要在所有内容安装/升级后等待完成其进程。【参考方案2】:这是我摆脱“compileSdkVersion 28”错误的方法。但在我以这种方式解决之前,我将 Android Studio IDE 从 3.4.1 -> 3.5.1 升级。我不确定这是否真的需要。所以不管你有什么版本的IDE,看看能不能用下面的步骤来解决。
转到“项目结构”-(IDE 右上角 AVD Manager 图标左侧的第二个图标)
在左侧导航下的“项目结构”对话框中单击项目设置->模块
选择模块后,在右侧窗格中您应该会看到 3 个选项卡 Sources、Paths、Dependencies
点击 Dependencies,如果出现 compileSdkVersion 28 错误,Dependencies 下的 SDK 版本指向低于 28 的版本 -> 选择 28 或更高版本
5.点击确定
-
现在重构->迁移到 AndroidX 对我有用
【讨论】:
【参考方案3】:在 gradle.build (app) 中添加这个
compileSdkVersion 28
defaultConfig
......
minSdkVersion 21
targetSdkVersion 28
......
还有一些实现需要使用 androidx :-
implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
并将给定的两行(如下)添加到 gradle.properties:-
android.useAndroidX=true
android.enableJetifier=true
【讨论】:
感谢您的回复。我会尝试并更新线程 我尝试了你的建议,但仍然显示相同的错误【参考方案4】:我遇到了完全相同的问题。一直在尝试迁移,因为所有新的 firebase 东西都在强制迁移,但目前的升级指南很少。首先,我尝试使用大量插件备份我的项目并不断收到该错误,然后我创建了一个全新的 Flutter 项目,其中包含所有最新的(开发频道),遵循每一步,检查每一个细节,阅读每一个论坛,但仍然得到“您需要在模块 build.gradle 中将 compileSdk 设置为至少 28 才能迁移到 AndroidX。”... 也匹配https://androidxhackathon.blogspot.com/2018/05/refactor-to-android-x.html 的步骤,但无法正确重构。 甚至去 File>ProjectStructure>Project SDK 并设置为 Android API 28 Platform。 有人知道我们可能缺少什么吗?山姆你运气好吗?
【讨论】:
我将尝试@Deepansu 的建议。如果它没有任何运气,那么我将卸载 Android Studio,然后再次尝试导入该项目。将更新帖子 运气好吗? @艾伦·贝迪安 不,花了几个小时尝试调试,但不确定是否有人能够运行迁移到 AndroidX 功能。再次,创建干净的准系统项目,按照所有步骤,compileSdkVersion 和 targetSdkVersion 为 28,将所有实现更改为 androidx 等效项,启用 gradle.properties,并使用我能想到的所有其他东西,仍然说“你需要将 compileSdk 设置为至少 28"... 运行最新的 Android Studio 3.3(在 Windows 上)、Flutter 1.2.0 等。我们还能缺少什么?有没有人让它正确迁移? 我也尝试卸载并重新安装我的 Android Studio 但仍然给出同样的错误... :-( @AlanBedian “在 Android Studio 中打开 Android 模块”是什么意思?您能否提供更多细节,以便我可以尝试相同的解决方案?谢谢!【参考方案5】:点击无效缓存/从文件重新启动选项对我有用
【讨论】:
【参考方案6】:尝试将 app/build.gradle 中 dependencies ...
中的默认值替换为:
dependencies
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
替换类似于此链接中“不推荐...”部分中发布的内容:https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility
如果您能解释为什么会这样,请添加评论。谢谢!
【讨论】:
【参考方案7】:转到“文件”菜单中的“项目结构”。清除您在那里看到的每个问题,例如 设置android sdk,修复指定问题
【讨论】:
【参考方案8】:一个简单的解决方案。 按照步骤操作。
-
创建一个新应用-->(在窗口中勾选androidX)-->完成
在 android --> app --> build.gradle 中添加如下几行, 更新默认配置
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
转到 Refractor --> migrateToAndroidx
做 Flutter 清洁
重启
运行
希望它现在可以工作......
【讨论】:
以上是关于无法将 Flutter 项目迁移到 AndroidX的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Flutter 项目迁移到 Firebase 版本 9 现代 Web 模块化风格
升级后无法在android studio上打开flutter项目
将 Flutter 应用迁移到 Flutter Web 时如何显示图像资产?