我正在将Android P测试的依赖项迁移到androidx依赖项。由于一些不太清楚的原因,我的项目不再编译(并且我不会提供细节以避免明显的问题)。我发现(通过gradlew dependencies
)数据绑定使用“oldschool”依赖android.arch.lifecycle:runtime:1.0.3
而不是androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
。我想这可能是一个原因。
知道如何强制使用新的包名/依赖项吗?
在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。
我面临类似的问题,Data Binding
库使用支持库,有些类可能与AndroidX
冲突。我现在必须删除DataBinding
。
我刚看了这个release note,它说这个问题已经解决,但我没有看到效果。
当我的互联网连接很弱时,我试过了,所以我跳过更新到Android Studio 3.2。那是我的错。随着升级(unziping花了差不多一个小时不明白为什么)我还被要求将我的构建工具升级到com.android.tools.build:gradle:3.2.0-beta04
(或者任何与Android Studio版本匹配的最新版本(我不会安装3.3.0-alpha03
)并升级gradle包装到4.6。
现在依赖关系消失了,我很高兴。
在我的情况下,错误是因为迁移到AndroidX的工具不能很好地工作。仍然有一些布局文件使用了一些旧的支持库。修复这些文件后,一切顺利=)
要解决这些布局文件中使用的每个支持库,我在此链接后更改为右侧:https://developer.android.com/jetpack/androidx/migrate
检查布局文件可能还有使用支持库而不是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">
1-将此行添加到build.gradle中
android {
dataBinding {
enabled = true
}
}
2- gradle.properties(项目属性)
android.databinding.enableV2=true