为什么 'androidx.constraintlayout:constraintlayout' 可以省略?
Why is 'androidx.constraintlayout:constraintlayout' omittable?
我注意到我可以注释掉 implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
而不会出现任何错误,尽管我在我的应用程序中使用了 ConstraintLayout。
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
// implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.navigation:navigation-fragment:2.3.3'
}
为什么可以? com.google.android.material 库是否也包含 constraintLayout?
是,implementation 'com.google.android.material:material:1.3.0'
包含 constraintLayout。
它确实来自 com.google.android.material:material:1.3.0
- 但是当你没有明确声明它时,你将针对版本 2.0.1
构建 - 而不是当前版本 2.0.4
.
只是 运行 ./gradlew app:dependencies
看看它会解析不同的版本。
免责声明:我不太确定为什么这些依赖关系相当过时
...但通常可以将它们排除在外,因此必须提供它们:
implementation ("com.google.android.material:material:1.3.0") {
exclude group: "androidx.annotation" // 1.0.1 < 1.1.0
exclude group: "androidx.appcompat" // 1.1.0 < 1.2.0
exclude group: "androidx.constraintlayout" // 2.0.1 < 2.0.4
exclude group: "androidx.core" // 1.2.0 < 1.3.2
exclude group: "androidx.fragment" // 1.0.0 < 1.3.0
exclude group: "androidx.lifecycle" // 2.0.0 < 2.3.0
exclude group: "androidx.recyclerview" // 1.0.0 < 1.1.0
exclude group: "androidx.transition" // 1.2.0 < 1.4.0
}
implementation "androidx.annotation:annotation:1.1.0"
implementation "androidx.appcompat:appcompat:1.2.0"
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.core:core:1.3.2"
implementation "androidx.fragment:fragment:1.3.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.3.0"
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.transition:transition:1.4.0"
至少 Maven Central 是这么说的;我假设没有副作用。
我注意到我可以注释掉 implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
而不会出现任何错误,尽管我在我的应用程序中使用了 ConstraintLayout。
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
// implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.navigation:navigation-fragment:2.3.3'
}
为什么可以? com.google.android.material 库是否也包含 constraintLayout?
是,implementation 'com.google.android.material:material:1.3.0'
包含 constraintLayout。
它确实来自 com.google.android.material:material:1.3.0
- 但是当你没有明确声明它时,你将针对版本 2.0.1
构建 - 而不是当前版本 2.0.4
.
只是 运行 ./gradlew app:dependencies
看看它会解析不同的版本。
免责声明:我不太确定为什么这些依赖关系相当过时
...但通常可以将它们排除在外,因此必须提供它们:
implementation ("com.google.android.material:material:1.3.0") {
exclude group: "androidx.annotation" // 1.0.1 < 1.1.0
exclude group: "androidx.appcompat" // 1.1.0 < 1.2.0
exclude group: "androidx.constraintlayout" // 2.0.1 < 2.0.4
exclude group: "androidx.core" // 1.2.0 < 1.3.2
exclude group: "androidx.fragment" // 1.0.0 < 1.3.0
exclude group: "androidx.lifecycle" // 2.0.0 < 2.3.0
exclude group: "androidx.recyclerview" // 1.0.0 < 1.1.0
exclude group: "androidx.transition" // 1.2.0 < 1.4.0
}
implementation "androidx.annotation:annotation:1.1.0"
implementation "androidx.appcompat:appcompat:1.2.0"
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.core:core:1.3.2"
implementation "androidx.fragment:fragment:1.3.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.3.0"
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.transition:transition:1.4.0"
至少 Maven Central 是这么说的;我假设没有副作用。