Flutter & AndroidX 不兼容如何手动设置依赖
Posted
技术标签:
【中文标题】Flutter & AndroidX 不兼容如何手动设置依赖【英文标题】:Flutter & AndroidX incompatibility How to set a dependency manually 【发布时间】:2019-10-22 23:52:52 【问题描述】:由于 androidX 不兼容,我在编译时遇到错误:
Android 依赖 'androidx.vectordrawable:vectordrawable' 对于编译 (1.0.0) 和运行时 (1.0.1) 类路径有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
在-> this post <- 之后,我在 build.gradle 中添加了一些代码
allprojects
configurations.all
resolutionStrategy.force"androidx.vectordrawable:vectordrawable:1.0.0",
repositories
google()
jcenter()
下一次运行给了我另一个错误
Android 依赖 'androidx.core:core' 对于编译 (1.0.0) 和运行时 (1.0.1) 类路径有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
我尝试添加这个
"androidx.vectordrawable:vectordrawable:1.0.0","androidx.core:core:1.0.0",
但我可能做错了,因为我得到了经典的“意外 bla bla bla”
有什么建议吗?
提前致谢
[edit] 我也试过这个老把戏,但没用 (还根据需要降级软件包HERE)
rootProject.allprojects
project.configurations.all
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"
现在返回一个不同的错误
Android 依赖 'androidx.appcompat:appcompat' 对于编译 (1.0.0) 和运行时 (1.0.2) 类路径有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
【问题讨论】:
如果我没看错 androidX 在 2 天前(2019 年 6 月 5 日)更新了一堆东西,这可能就是颤振落后的原因:/developer.android.com/jetpack/androidx/versions 【参考方案1】:-
在 android/gradle/wrapper/gradle-wrapper.properties 中更改以 distributionUrl 开头的行,如下所示:distributionUrl=https://services.gradle.org/distributions/gradle-4.10.2-all.zip
2.在android/build.gradle中,替换:
dependencies
classpath 'com.android.tools.build:gradle:3.2.1'
通过
dependencies
classpath 'com.android.tools.build:gradle:3.3.0'
3.在android/gradle.properties中,追加
android.enableJetifier=true
android.useAndroidX=true
4.在android/app/build.gradle:
在 android 下,确保 compileSdkVersion 和 targetSdkVersion 至少为 28。
5. 将所有已弃用的库替换为 AndroidX 等效项。例如,如果您使用默认的 .gradle 文件,请进行以下更改:
在android/app/build.gradle中
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
通过
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
最后,在依赖项下替换
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
通过
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
【讨论】:
【参考方案2】:您需要将此指示用于最新版本的... :)
1) 在
android/gradle/wrapper/gradle-wrapper.properties
用最新的gradle替换以distributionUrl开头的行:
> distributionUrl = https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
2)在
android/build.gradle
你需要更换:
> dependencies
> classpath 'com.android.tools.build:**gradle:x.x.x**'
与
dependencies classpath 'com.android.tools.build:**gradle:3.5.0**'
3) 在 android/gradle.properties 中粘贴这个
android.enableJetifier=true android.useAndroidX=true
4) 在 android/app/build.gradle 中:确保 compileSdkVersion 和 targetSdkVersion 至少为 28``
最重要的是这里: 在android/app/build.gradle:替换
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
用`
> testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
`
替换
> androidTestImplementation 'com.android.support.test:runner:x.x.x'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:x.x.x'
与
> androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
【讨论】:
我也遇到了同样的问题,我已经按照你的指示做了,我什至和其他人一起尝试过,但是错误仍然存在,我不知道要改变什么,我不知道它是否会影响我有最新版本的颤振。Execution failed for task ':simple_permissions:verifyReleaseResources
@Messou【参考方案3】:
始终确保新添加的依赖项与您的 gradle 版本相匹配, 您可能需要升级或降级依赖项以匹配您的 gradle 版本,但最重要的是,建议使用最新的 gradle 版本并将其与最新的插件依赖项匹配以避免这些错误。
【讨论】:
以上是关于Flutter & AndroidX 不兼容如何手动设置依赖的主要内容,如果未能解决你的问题,请参考以下文章
如何在flutter中使用flutter_webview_plugin和AndroidX
错误:flutter中不存在包androidx.lifecycle
Flutter 无法在设备导入 androidx.annotation.Nullable 上运行应用程序
使用flutter_local_notifications和位置包的flutter错误“Android依赖'androidx.core:core'有不同的版本”