React Native 开发 安卓项目构建工具Gradle的配置和使用

gradle基本知识

gradle是React Native和Flutter调试、构建安卓App的打包工具。

gradle可以简单的类比为前端的webpack,webpack将源文件打包成HTML、CSS、JavaScript,而gradle将源文件打包成apk或aar(Android Assemble Bundle)。

React Native项目的android子项目的文件结构如下:

bash 复制代码
.gradle 
app
gradle
        wrapper
                gradle-wrapper.jar
                gradle-wrapper.propertier
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle

每个文件的含义如下:

  • .gradle : gradle本地配置
  • app:apk的输出目录
  • gradle/wrapper/gradle-wrapper.propertier: gradle-wrapper的配置文件
  • gradle/wrapper/gradle-wrapper.jar: 与gradle-wrapper.propertier对应
  • build.gradle : gradle项目的配置文件
  • gradle.properties: gradle项目的配置文件
  • gradlew: Linux、MacOS平台构建安卓app时运行的脚本
  • gradlew.bat: Windows平台构建安卓app时运行的脚本
  • settings.gradle: gradle项目的配置文件

gradle和gradle-wrapper的区别

gradle是一个全局、通用的构建工具,而gradle-wrapper是在项目本地目录使用的构建工具。

对于React Native或Flutter而言,并不需要使用gradle,直接运行gradlew.bat脚本即可,gradlew就是gradle-wrapper对应的脚本工具。

添加国内镜像仓库

换源几乎是包管理器的必备操作。有些软件包的仓库在国内是无法访问的,因此需要增加国内的镜像仓库,实际上只需要改两个文件:

  • ./android/gradle/wrapper/gradle-wrapper.properties
  • ./android/build.gradle

下面依次说明怎么修改。

要修改的第一个文件是gradle-wrapper.properties,只需要修改distributionUrl的那一行,把后面的链接改成国内阿里云的,文件是gradle-8.6-all.zip,注意版本。

bash 复制代码
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.6-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

这里补充说明一下每一行的含义:

  • distributionBase : gradle的根目录。GRADLE_USER_HOME默认为家目录下的.gradle文件夹,保持默认,不要修改。
  • distributionPath :gradle的路径,与上面的根目录组合就是gradle的实际位置。
  • zipStoreBase和zipStorePath : 第三方工具的放置位置。

要修改的第二个文件是build.gradle。这里面的repositories部分定义了gradle应该去哪里下载第三方插件,默认内容是google()和mavenCentral()两个国外仓库。

这两个仓库需要使用挂代理才能使用,但是不能删除,因为有些插件的有些版本国内的镜像仓库并没有,必须要去这里下载。所以保留这两个仓库,在后面添加三个仓库,修改后的内容是:

javascript 复制代码
repositories {
     google()
     mavenCentral()
     maven { url 'https://maven.aliyun.com/repository/google' }
     maven { url 'https://maven.aliyun.com/repository/jcenter' }
     maven { url 'https://maven.aliyun.com/nexus/content/groups/public'}
    }

构建安卓App

首先使用USB或无线的方式连接手机与电脑,然后运行如下命令开始安卓的调试:

javascript 复制代码
npm run android

这会打开Metro程序,这个程序会实时监控源文件的修改,并实时重新编译安卓App。

源代码编写完成后,就可以构建apk了。首先进入android子项目中:

javascript 复制代码
cd android

然后运行如下命令开始打包apk:

javascript 复制代码
.\gradlew.bat assemble

实际上gradlew.bat 还有很多其它子命令,表示不同的任务,使用如下命令查看:

javascript 复制代码
.\gradlew.bat tasks

比较常用的有三个命令:

  • .\gradlew.bat assemble: 打包成apk文件,国内应用商店使用这个文件。
  • .\gradlew.bat bundle: 打包成aar文件,谷歌应用商店使用这个文件。
  • .\gradlew.bat build: 除了打包成安装包,还会进行测试等工作。

打包完成后,在./android/app/build/outputs/apk/release文件夹下,可以找到app-release.apk文件。将这个文件拷贝到手机安装即可。不过,由于app没有签名,会提示不能直接安装,忽略风险继续安装即可。

相关推荐
游戏开发爱好者838 分钟前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码203543 分钟前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥1 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓1 小时前
[JDBC]元数据
android
独行soc1 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能2 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿2 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
lbb 小魔仙2 小时前
【HarmonyOS实战】OpenHarmony + RN:自定义 useFormik 表单处理
react native·harmonyos
独行soc2 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20353 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos