关于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多。

相关推荐
祖国的好青年17 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴17 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle
一个扣子17 小时前
性能面板解读:通过 Hermes Runtime 测量函数执行耗时
react native·chrome devtools·hermes·性能面板·函数耗时·performance api
码云数智-园园21 小时前
PHP 8.x 命名的参数与属性(Attribute):告别注释,构建真正的元数据
android·ide·android studio
shuangrenlong2 天前
android studio突然一直importing卡住
android·ide·android studio
大黄说说2 天前
匹配表达式 vs. Switch语句:现代PHP中的条件逻辑重构
android·ide·android studio
我命由我123452 天前
Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
我命由我123452 天前
Kotlin 开发 - sealed 关键字
android·java-ee·kotlin·android studio·android jetpack·android-studio·android runtime
我命由我123453 天前
Java 开发 - CountDownLatch 不需要手动关闭
android·java·开发语言·jvm·kotlin·android studio·android-studio
一个扣子3 天前
Hermes 的 Android 与 iOS 平台差异化配置详解
react native·字节码·新架构·hermes·android配置·ios配置·平台差异