序言
最近学习了 Flutter 一段时间,确实感觉到 Flutter 是一个未来的大趋势,更新到 1.12 后一套代码能在全平台运行。(Andorid,IOS,Linux,Windows,Web,Mac)并且相对来说学习难度不大,语法,工具都比较现代与先进。实在建议各位 APP 开发或者前端开发好好学一学。好了说重点,今天我的同事运行 Flutter 项目时就出现了一个 AndroidX 的兼容问题,虽然对我来说不是什么大问题,但是对于没有 Android 开发经验的前端来说可能这个问题会卡一天。因此还是留下这个解决方案,好好做人,贡献社会
问题标识
引入第三方插件后,重新在 Android 上编译出现错误提示
java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.2) and classes.jar (com.android.support:support-compat:28.0.0)
同时出现 androidx com.android.support 字样的一般都是 androidx 的兼容问题了
错误分析
android.support 是早前的 Android 开发工具包,大部分的控件都是依赖这个。但是由于历史原因已经出现了 android.support.v4 v7 v13 等各个版本,每次更新版本,相关控件的包名都要替换。为了解决这个麻烦的版本更新问题,现在统一江湖改为 androidx ,因此出现这个 support 与 androidx 的冲突问题。
解决步骤
既然知道了问题所在,那修复起来也就不难了。
基于你有没有 Android Studio 这里有两种方式,推荐先下载 Android Studio
方式 1 不使用 Android Studio
网上教程很多,这里贴一个,但是估计没有 Android 开发经验也很难改好
方式 2 使用 Android Studio (推荐)
下载 Android Studio 最新版
使用 Android Studio 打开你的 Flutter 项目下的 Android 目录
等待编译完成,时间可能需要几分钟不等
编译完后可以看到运行的图标绿了 绿了绿了 它绿了
然后点击 Refactor 的 Migrate to AndoridX
可以把备份关掉
然后点击下面的 Do Refactor
之后稍等片刻就可以正常运行了
后续问题
博主你骗人呀,我弄完了上一步还是出现别的错误了,还我血汗钱!
同学别着急,一般来说弄完上面一步就可以解决问题了。但是也有不一般的情况,就是 androidX 的版本不一致导致的问题 大概报错提示可以看到
androidx.core:core:1.1.0 ... androidx.core:core:1.0.0
之类的,就说明是版本不一致了
解决方法也好办
打开 build.gradle module:app 这个文件
详细地址是 android/app/build.gradle
在 android{} 里面复制如下代码
configurations.all {
resolutionStrategy {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'androidx.core') {
details.useVersion "1.0.1"
}
if (details.requested.group == 'androidx.lifecycle') {
details.useVersion "2.0.0"
}
if (details.requested.group == 'androidx.versionedparcelable') {
details.useVersion "1.0.0"
}
if (details.requested.group == 'androidx.fragment') {
details.useVersion "1.0.0"
}
if (details.requested.group == 'androidx.appcompat') {
details.useVersion "1.0.1"
}
}
}
}
这段代码的作用就是固定 androidx.core 的版本,让插件的版本也保持一致,接着点击上方的 Sync Now 等待下载完成就可以了。
尾语
这次的解决步骤已经截图很明确了,如果真的有帮到你的话,帮我点下 (我的 Solo 博客)[http://www.moyck.com/]广告就好了~嘿
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于