对与rn、flutter等项目,在初学者对于下载gradle会感觉到抓挠,下载依赖时非常慢,以下是个人依赖下载处理的记录
1.gradle本体下载
初次生成rn项目时,在安装完nodemodules后,执行npm run android或者其他yarn pnpm,首先就是下载gradle,需要在项目根目录下面的android/gradle/gradle-wrapper.properties里面修改
js
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# 这是初始化生成自带的,地址为国外,100多mb下载巨慢无比
# distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
# 这是阿里云的国内gradle镜像,不同版本的rn需要的的gradle不一样,如果gradle-8.14.1-bin.zip这部分不同,
# 这部分保留替换前面的
distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle//gradle-8.14.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2.gradle下载依赖
这部分需要在Android/build.gradle里面配置
js
buildscript {
ext {
buildToolsVersion = "35.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
ndkVersion = "27.1.12297006"
kotlinVersion = "2.1.20"
}
repositories {
#这部分是修改的,抛开google与mavenCentral添加的,其他的都是国内镜像。
# 腾讯云
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
// 华为云镜像
maven { url 'https://repo.huaweicloud.com/repository/maven/' }
// 腾讯云镜像
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
// 网易镜像
maven {url 'https://mirrors.163.com/maven/repository/maven-public/' }
google()
mavenCentral()
}
dependencies {
// classpath("com.android.tools.build:gradle:8.4.0")
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}
#这部分为添加的,
allprojects {
repositories {
#同上
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
// 华为云镜像
maven { url 'https://repo.huaweicloud.com/repository/maven/' }
// 腾讯云镜像
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
// 网易镜像
maven {url 'https://mirrors.163.com/maven/repository/maven-public/' }
google()
mavenCentral()
}
}
apply plugin: "com.facebook.react.rootproject"
在初始化的项目中只有buildscript与括号里面的东西和apply plugin: "com.facebook.react.rootproject",当配置完后依然遇到下载较慢的问题,这时候可以使用一项配置查看下载的镜像源的域名是哪里的。
在android/gradle.properties 内
js
# android/gradle.properties
....其他配置
org.gradle.logging.level=info
开启这个后在查看下载会发现有部分依然是使用国外源,这时候需要在nodemodules里面配置
例如在nodemodules/@react-native/gradle-plugin/settings.gradle.kts
kts
pluginManagement {
repositories {
#同上,除开mavenCentral google gradlePluginPortal其他都是国内镜像源
maven { url = uri("https://maven.aliyun.com/repository/central") }
maven { url = uri("https://maven.aliyun.com/repository/jcenter") }
maven { url = uri("https://maven.aliyun.com/repository/google") }
maven { url = uri("https://maven.aliyun.com/repository/public") }
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
mavenCentral()
google()
gradlePluginPortal()
}
}
plugins { id("org.gradle.toolchains.foojay-resolver-convention").version("0.5.0") }
include(
":react-native-gradle-plugin",
":settings-plugin",
":shared",
":shared-testutil",
)
rootProject.name = "gradle-plugin-root"
同样的,在rn的第三方库中多少都涉及到gradle,如果发现卡顿下载慢,查看下载慢的依赖在跑去库内比对。比如react-native-fs
在nodemodules/react-native-fs/android/build.gradle修改进行尝试。
gradle在构建过程中有
- 初始化阶段(有INIT开头的英文)
- 配置阶段(有CONFIG开头英文)
- 执行阶段(有EXEC开头英文) 在gradle构建中最大的包是react-android-debug.arr 该包有200mb,否则会下载将近2、3个小时(别人,问就是亲身经历),该在执行阶段,这部分一定要用国内镜像源!!
还有就是hermes-android.aar z这个包。
当你打包的时候也需要下载react-android-release.arr的包,100多。