在 Android Studio 中使用 React Native 时,有时需要手动设置依赖项的版本,以确保编译和运行时类路径中的依赖项版本一致。这通常涉及到在 android/build.gradle
文件中进行配置。
以下是如何通过 DependencyResolution 手动设置相同版本的步骤:
android/build.gradle
文件在你的 React Native 项目中,导航到 android/build.gradle
文件。
allprojects
部分在 allprojects
部分中,添加 resolutionStrategy
来强制所有模块使用相同版本的依赖项。以下是一个示例,展示了如何设置 com.android.support
和 com.google.android.gms
的版本:
allprojects {
repositories {
google()
mavenCentral()
}
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:28.0.0'
force 'com.google.android.gms:play-services-base:17.6.0'
// 添加其他需要强制的依赖项版本
}
}
}
subprojects
部分(可选)有时,你可能需要在 subprojects
部分中进行额外的配置,以确保所有子项目都使用相同的依赖项版本:
subprojects {
project.configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:28.0.0'
force 'com.google.android.gms:play-services-base:17.6.0'
// 添加其他需要强制的依赖项版本
}
}
}
完成上述配置后,点击 Android Studio 顶部的 "Sync Project with Gradle Files" 按钮,以应用更改并同步项目。
android/build.gradle
文件以下是一个完整的 android/build.gradle
文件示例:
buildscript {
ext {
buildToolsVersion = "30.0.3"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
kotlinVersion = "1.5.10"
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:4.2.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
mavenCentral()
}
configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:28.0.0'
force 'com.google.android.gms:play-services-base:17.6.0'
// 添加其他需要强制的依赖项版本
}
}
}
subprojects {
project.configurations.all {
resolutionStrategy {
force 'com.android.support:support-v4:28.0.0'
force 'com.google.android.gms:play-services-base:17.6.0'
// 添加其他需要强制的依赖项版本
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
如果你在同步项目时遇到依赖项冲突,可以使用 resolutionStrategy
的 eachDependency
方法来处理冲突。例如:
allprojects {
repositories {
google()
mavenCentral()
}
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'com.android.support' && details.requested.name != 'multidex') {
details.useVersion '28.0.0'
}
if (details.requested.group == 'com.google.android.gms') {
details.useVersion '17.6.0'
}
}
}
}
}
领取专属 10元无门槛券
手把手带您无忧上云