Androidx 和数据绑定
Androidx and databinding
我正在将 Android P 测试的依赖项迁移到 androidx 依赖项。由于一些不太清楚的原因,我的项目不再编译(不,我不会提供详细信息以避免出现明显的问题)。我发现(通过 gradlew dependencies
)数据绑定使用 "oldschool" 依赖项 android.arch.lifecycle:runtime:1.0.3
而不是 androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
。我想这可能是原因之一。
知道如何强制使用新包 names/dependencies 吗?
我遇到了类似的问题,Data Binding
库使用支持库,一些类可能与AndroidX
冲突。我现在必须删除 DataBinding
。
刚刚看了这个release note,说这个问题已经修复了,但是没看到效果
我在互联网连接较弱时尝试过,所以我跳过更新到 Android Studio 3.2。那是我的错。通过升级(解压缩花了将近一个小时不知道为什么)我还被要求将我的构建工具升级到 com.android.tools.build:gradle:3.2.0-beta04
(或者任何与你的 Android Studio 版本匹配的最新版本(我不会安装 3.3.0-alpha03
) 并将 gradle 包装器升级到 4.6.
现在依赖没有了,我很高兴。
在我的例子中,错误是因为迁移到 AndroidX 的工具不能完美运行。仍然有一些布局文件使用一些旧的支持库。修复这些文件后,一切顺利 =)
为了解决这些布局文件中使用的每个支持库,我在 link 之后更改为正确的库: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">
在 gradle.properties
中启用 AndroidX 为我解决了这个问题:
android.useAndroidX=true
android.enableJetifier=true
参见https://developer.android.com/jetpack/androidx#using_androidx:
android.useAndroidX
: When set to true, the Android plugin uses the
appropriate AndroidX library instead of a Support Library. The flag is
false by default if it is not specified.
android.enableJetifier
: When
set to true, the Android plugin automatically migrates existing
third-party libraries to use AndroidX by rewriting their binaries. The
flag is false by default if it is not specified.
1- 将此行添加到 build.gradle
android {
dataBinding {
enabled = true
}
}
2- gradle.properties(项目属性)
android.databinding.enableV2=true
我正在将 Android P 测试的依赖项迁移到 androidx 依赖项。由于一些不太清楚的原因,我的项目不再编译(不,我不会提供详细信息以避免出现明显的问题)。我发现(通过 gradlew dependencies
)数据绑定使用 "oldschool" 依赖项 android.arch.lifecycle:runtime:1.0.3
而不是 androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
。我想这可能是原因之一。
知道如何强制使用新包 names/dependencies 吗?
我遇到了类似的问题,Data Binding
库使用支持库,一些类可能与AndroidX
冲突。我现在必须删除 DataBinding
。
刚刚看了这个release note,说这个问题已经修复了,但是没看到效果
我在互联网连接较弱时尝试过,所以我跳过更新到 Android Studio 3.2。那是我的错。通过升级(解压缩花了将近一个小时不知道为什么)我还被要求将我的构建工具升级到 com.android.tools.build:gradle:3.2.0-beta04
(或者任何与你的 Android Studio 版本匹配的最新版本(我不会安装 3.3.0-alpha03
) 并将 gradle 包装器升级到 4.6.
现在依赖没有了,我很高兴。
在我的例子中,错误是因为迁移到 AndroidX 的工具不能完美运行。仍然有一些布局文件使用一些旧的支持库。修复这些文件后,一切顺利 =)
为了解决这些布局文件中使用的每个支持库,我在 link 之后更改为正确的库: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">
在 gradle.properties
中启用 AndroidX 为我解决了这个问题:
android.useAndroidX=true
android.enableJetifier=true
参见https://developer.android.com/jetpack/androidx#using_androidx:
android.useAndroidX
: When set to true, the Android plugin uses the appropriate AndroidX library instead of a Support Library. The flag is false by default if it is not specified.
android.enableJetifier
: When set to true, the Android plugin automatically migrates existing third-party libraries to use AndroidX by rewriting their binaries. The flag is false by default if it is not specified.
1- 将此行添加到 build.gradle
android {
dataBinding {
enabled = true
}
}
2- gradle.properties(项目属性)
android.databinding.enableV2=true