我正在将我的Android P测试依赖项迁移到androidx依赖项。由于某些不太清楚的原因,我的项目不再编译(并且不提供详细信息以避免出现明显问题)。我发现(通过gradlew dependencies
),数据绑定使用的是“ oldschool”依赖项android.arch.lifecycle:runtime:1.0.3
而不是androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
。我想这可能是原因之一。
有什么主意如何强制使用新的程序包名称/依赖关系?
答案 0 :(得分:4)
我面临类似的问题,Data Binding
库使用支持库,某些类可能与AndroidX
冲突。我现在必须删除DataBinding
。
我刚刚读过release note,它说这个问题已经解决,但是我没有看到效果。
答案 1 :(得分:3)
在gradle.properties
中启用AndroidX为我解决了此问题:
android.useAndroidX=true
android.enableJetifier=true
请参见https://developer.android.com/jetpack/androidx#using_androidx:
android.useAndroidX
:设置为true时,Android插件使用 合适的AndroidX库,而不是支持库。标志是 如果未指定,则默认为false。
android.enableJetifier
:何时 设置为true,Android插件会自动迁移现有的 第三方库通过重写二进制文件来使用AndroidX。的 如果未指定,默认情况下该标志为false。
答案 2 :(得分:2)
我尝试在互联网连接较弱的情况下尝试此操作,因此跳过了更新至Android Studio 3.2的操作。那是我的错升级后(解压缩花了将近一个小时,不知道为什么),我还被要求将构建工具升级到com.android.tools.build:gradle:3.2.0-beta04
(或与您的Android Studio版本匹配的最新版本(我不会安装{{ 1}}),并将gradle包装器升级到4.6。
现在依赖性消失了,我很高兴。
答案 3 :(得分:1)
检查布局文件,可能还剩下使用支持库而不是androidx的视图 例如
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
将其更改为
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
答案 4 :(得分:1)
1-将此行添加到build.gradle
android {
dataBinding {
enabled = true
}
}
2- gradle.properties(项目属性)
android.databinding.enableV2=true
答案 5 :(得分:0)
就我而言,该错误是因为迁移至AndroidX的工具无法完美运行。仍然有一些使用一些旧支持库的布局文件。修复这些文件后,一切顺利=)
要修复,在这些布局文件中使用的每个支持库,我都通过以下链接更改为右侧的支持库:https://developer.android.com/jetpack/androidx/migrate