关于rn下载gradle依赖速度慢的问题

对与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在构建过程中有

  1. 初始化阶段(有INIT开头的英文)
  2. 配置阶段(有CONFIG开头英文)
  3. 执行阶段(有EXEC开头英文) 在gradle构建中最大的包是react-android-debug.arr 该包有200mb,否则会下载将近2、3个小时(别人,问就是亲身经历),该在执行阶段,这部分一定要用国内镜像源!!

还有就是hermes-android.aar z这个包。

当你打包的时候也需要下载react-android-release.arr的包,100多。

相关推荐
尚学教辅学习资料16 小时前
SpringBoot3.x入门到精通系列:1.2 开发环境搭建
spring boot·gradle·maven·intellij idea·jdk17·开发环境
moning19 小时前
Window 的 Type 失效了?IME 为什么在 Toast 下方?
前端·操作系统·android studio
编程乐学1 天前
网络资源模板--基于Android Studio 实现的新闻App
android·android studio·移动端开发·新闻·安卓大作业·新闻app
不想迷路的小男孩1 天前
Android Studio怎么显示多排table,打开文件多行显示文件名
android·ide·android studio
广煜永不挂科2 天前
Android Studio关于Connection refused: connect报错
android·ide·android studio
林林要一直努力2 天前
Android Studio安装,SDK、Gradle、模拟器、AS路径改为非C盘(Windows为例)
android·ide·android studio
编程乐学2 天前
网络资源模板--基于Android Studio 实现的课程管理App
android·android studio·大作业·移动端开发·安卓移动开发·课程管理
编程乐学2 天前
网络资源模板--基于Android Studio 实现的图书商城App
android·android studio·商城·大作业·移动端开发·购物商城·安卓大作业
小墙程序员2 天前
一文了解 AGP8 的使用
android·gradle