无法将Flutter项目迁移到AndroidX

33
我在Android Studio中有一个Flutter项目,我计划迁移到AndroidX。每当我执行重构-> 迁移到 AndroidX时,Android Studio会显示错误消息:

 

要迁移到AndroidX,您需要将compileSdk设置为至少28,在module build.gradle中设置。

但是我已经在我的app / gradle.build文件中设置了compileSdkVersion 28

enter image description here

我还需要做其他什么吗?

8个回答

57

我已经解决了我的问题:

  1. 在Android Studio中打开Flutter项目
  2. 右键单击android目录,点击Flutter->在Android Studio中打开Android模块。它要求我升级gradle插件。
  3. 然后我安装了Google Play服务。工具->SDK管理器->SDK工具并选中Google Play服务。

安装Google Play服务后,我进行了重构->迁移到AndroidX。 它开始工作了。

注意: 从步骤2中打开的项目窗口进行重构


7
我尝试过了,但我的“Flutter”菜单语音被禁用了,而且我不知道如何打开“打开Android”菜单语音。 - Giacomo M
@GiacomoMasseroniChiaro 我也遇到了同样的问题 https://imgur.com/2C4EnIH你有什么解决办法吗?在iOS模块上它可以工作。 - Niamh
3
@Jerry,我在“工具”->“Flutter”中找不到这样的条目。 - DarkNeuron
3
是的,它起到了作用。只有一件事需要补充 - 在所有安装/升级完成后,需要等待一段时间以完成其进程。 - Sithu
我完成了所有步骤,没有使用“升级gradle插件”,这样做效果非常好。对我来说很重要,因为升级会导致版本依赖错误,在我的情况下升级是不必要的。 - Ahmed Hammad
显示剩余3条评论

8
以下是我如何解决“compileSdkVersion 28”错误的方法。但在我用这种方法解决之前,我将Android Studio IDE从3.4.1升级到了3.5.1。我不确定是否真的需要这样做。因此,无论您使用哪个版本的IDE,请尝试使用以下步骤来解决它。
1. 进入“项目结构” - (位于IDE右上角AVD管理器图标左侧的第二个图标) 2. 在“项目结构”对话框中,在左侧导航下单击“项目设置->模块” 3. 选择模块后,在右侧窗格中,您应该看到3个选项卡:源、路径、依赖项 4. 单击“依赖项”,如果您遇到“compileSdkVersion 28”错误,则依赖项下的SDK版本指向低于28的版本->选择28或更高版本 5. 点击确定
6. 现在重构->迁移到AndroidX对我有用
(图片来源:Project Structure -> Modules -> Dependencies

4
在 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

谢谢您的回复。我会尝试并更新该主题。 - Sam
6
我尝试了您建议的方法,但仍然显示相同的错误。 - Sam

0

尝试将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

如果您能解释为什么这样做有效,请添加评论。谢谢!


0
一个简单的解决方案。 按照以下步骤操作。
创建一个新的应用程序 --> (在窗口中打勾androidX) --> 完成 在android --> app --> build.gradle中添加以下内容到defaultConfig:
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
转到Refractor --> 迁移到Androidx 执行Flutter clean 重新启动 运行

希望现在能够正常工作...


0

在文件菜单中进入“项目结构”。清除您在那里看到的所有问题,例如设置Android SDK,修复指定的问题。


0

我也遇到了同样的问题。由于所有新的Firebase东西都在强制迁移,所以一直在尝试迁移,但是当前的升级指南很少。首先,我尝试在备份项目上进行迁移,该项目有很多插件,但是一直出现错误,然后我创建了一个全新的Flutter项目,使用了最新的(dev channel),按照每个步骤,检查每个细节,阅读每个论坛,但仍然出现“您需要将compileSdk设置为至少28才能在模块build.gradle中迁移到AndroidX。” 我还从https://androidxhackathon.blogspot.com/2018/05/refactor-to-android-x.html匹配了步骤,但无法正确重构。 甚至去了File>ProjectStructure>Project SDK并设置为Android API 28 Platform。 有人知道我们可能错过了什么吗?Sam,你有什么好运吗?


我打算尝试一下@Deepansu建议的方法。如果没有运气,那么我将卸载Android Studio,然后再尝试导入项目。我会更新帖子。 - Sam
没有,我花了几个小时来尝试调试,并不确定是否有人能够运行到 AndroidX 迁移功能。再次创建了一个干净的基本项目,按照所有步骤操作,compileSdkVersion 和 targetSdkVersion 是 28,将所有实现更改为 androidx 的等效实现,启用了 gradle.properties,并且尝试了我所能想到的其他所有方法,仍然显示“您需要将 compileSdk 设置至少为 28”... 运行最新版本的 Android Studio 3.3(在 Windows 上),Flutter 1.2.0 等等。我们还缺少什么?有没有人成功地进行过迁移呢? - Alan Bedian
我也尝试卸载并重新安装我的Android Studio,但仍然出现相同的错误... :-( - Sam
好的,这就是在Android Studio中打开Android模块的技巧,太棒了。我自己可能不会碰巧发现这个过程,谢谢。应该将该解决方法添加到官方的迁移到AndroidX指南中。现在,我要冒险尝试在我使用了60多个附加组件的Flutter项目中应用它,有点紧张,但至少我们解决了这个问题... - Alan Bedian
1
@AlanBedian 你说的“在Android Studio中打开Android模块”是什么意思?能否提供更多细节,以便我可以尝试相同的解决方案?谢谢! - Eric Duffett
显示剩余2条评论

0

点击“使缓存失效/从文件重启”选项对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接