【Flutter】androidx.versionedparcelable.CustomVersionedParcelable
flutter原生项目,ios运行没有问题,生成Android包时报错:
1 | Error: “Program type already present: androidx.versionedparcelable.CustomVersionedParcelable” |
有两种方法,第一种降低pubspec.yaml中barcode_scan的版本,此方法未测试,大家自行查看解决:
https://blog.csdn.net/weixin_33816946/article/details/91416644
第二种,亲自测试可用,让flutter生成的Android包支持AndroidX,以下为具体步骤:
step1:参考https://stackoverflow.com/questions/53570454/error-program-type-already-present-androidx-versionedparcelable-customversion在gradle.properties文件中加入以下两句代码
1 2 | android.useAndroidX= true android.enableJetifier= true |
运行测试后,如果报错信息如下,继续看step2:
1 | Android dependency ‘androidx.core:core’ has different version for the compile (1.0.0) and runtime (1.0.1) classpath. You should manually set the same version via DependencyResolution |
step2:参考https://www.codercto.com/a/80137.html中,将
1 | project.evaluationDependsOn(':app') |
注释掉,改为
1 2 3 4 5 6 7 | project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'androidx.core' &&!details.requested.name.contains('androidx')) { details.useVersion "1.0.1" } } } |
问题解决,如果仍然错误,并且信息如下,继续看step3:
1 | Could not resolve all files for configuration ':lintClassPath'. |
step3:参考https://blog.csdn.net/u010264659/article/details/80358407,问题是gradle版本和Android studio版本不一致(真是个傻屌问题。。。),然后将gradle版本更改为3.6.1,同时修改gradle-wrapper.properties中url为最新版
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
至此,所有问题解决,如果提示gradle版本无法下载,建议开启代理或者vpn
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步