You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Android:如何用Gradle/Groovy将文件打包进APK

安卓端迁移文件打包实现方案(React Native项目)

实现步骤

1. 创建独立的Gradle脚本文件

在项目的android目录下新建copyMigrations.gradle文件,写入以下代码:

// 定义复制迁移文件的任务
task copyMigrationsToAssets(type: Copy) {
    // 源目录:项目根目录下的migrations文件夹
    from "${rootProject.projectDir}/migrations"
    // 目标目录:app模块的assets/migrations文件夹(自动创建不存在的目录)
    into "${project.projectDir}/src/main/assets/migrations"
    
    // 只复制.sql后缀的迁移文件(可选,按需调整)
    include "*.sql"
    
    // 打印日志,方便排查
    doLast {
        println "✅ 迁移文件已成功复制到APK资源目录"
    }
}

// 将复制任务绑定到编译流程:确保在资源处理前执行,保证文件被打包进APK
preBuild.dependsOn copyMigrationsToAssets

2. 在App模块的build.gradle中引入脚本

打开android/app/build.gradle,在文件开头(或plugins块之后)添加以下代码:

// 引入迁移文件复制脚本
apply from: '../copyMigrations.gradle'

关键说明

  • 路径对应关系:脚本中rootProject.projectDir指向项目根目录,确保能正确找到根目录下的migrations文件夹;目标路径src/main/assets/migrations是安卓资源目录,编译时会自动打包进APK的assets目录。
  • 编译流程钩子:通过preBuild.dependsOn将复制任务绑定到预构建阶段,保证在资源编译、APK打包前完成文件复制,符合你要求的「签名前完成操作」的逻辑。
  • 运行时访问:App启动后,可通过安卓的AssetManager访问这些文件,示例代码(Kotlin):
val assetManager = context.assets
val migrationFiles = assetManager.list("migrations") ?: emptyArray()
migrationFiles.forEach { fileName ->
    assetManager.open("migrations/$fileName").use { inputStream ->
        // 读取文件内容并执行迁移逻辑
    }
}

与iOS脚本的等价性

该实现和你提供的iOS bash脚本逻辑完全对应:

  • 源路径:项目根目录的migrations文件夹
  • 目标路径:安卓的资源目录(对应iOS的UNLOCALIZED_RESOURCES_FOLDER_PATH)
  • 自动创建目标目录(Gradle的Copy任务会自动生成不存在的目录)
  • 完成后打印成功日志

内容的提问来源于stack exchange,提问作者Oscar Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:47:29