无法将 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_web迁移到蜂鸟中颤动?

将 Flutter 应用迁移到 Flutter Web 时如何显示图像资产?

Flutter 升级到 v1.14.7-pre.83 并迁移到 AndroidX 后只显示白屏

Flutter android未构建版本,移至新机器后出现key.jks问题[关闭]