网易首页 > 网易号 > 正文 申请入驻

一键集成!原生 Android 工程智能打包 React Native Bundle 的终极脚本

0
分享至

在当前混合开发盛行的 Android 项目中,越来越多的团队将 React Native(以下简称 RN)作为 UI 层的补充组件。而如何高效、稳定地将 RN 工程的 JS Bundle 自动同步到原生项目中,并完成打包,成为一项重要的工程实践。

今天,我们将通过一个实际案例,一步步打造一个“能判断是否有提交变更、自动生成 JS Bundle、并集成到原生 APK 构建流程”的脚本,彻底告别手动操作,让你从容应对构建上线流程!

✅ 背景需求

在我们的项目中,存在两个工程:

  • A 工程:Android 原生项目,用于最终打包 APK;

  • B 工程:React Native 项目,负责业务模块的 JS 编写和资源管理。

需求如下:

当 A 工程执行打包时,先判断 B 工程是否有 Git 提交变更,如果有,则生成 JS Bundle 并拷贝到 A 工程中,再执行 APK 打包。

注意,这个流程必须自动化处理,不能依赖人工判断或手动复制。

✅ 技术要点

  • Git 提交变更检测:通过记录上一次提交的 commit hash,判断是否有更新;

  • 自动拉取 B 工程:如果首次执行,还没有拉取 RN 项目,则自动 clone;

  • 自动生成 JS Bundle:调用react-native bundle命令生成资源;

  • 拷贝资源文件:将生成的 bundle 和 assets 拷贝到 A 工程对应目录;

  • 执行 A 工程打包命令

  • 支持 Gradle/CI 工具集成

完整终极脚本:pre_build_rn_sync.sh
你只需要将它放在 A 工程根目录,一次配置,终身使用。

#!/bin/bash 
set -e

# ==== 配置区域 ====
A_PROJECT_DIR=$(cd "$(dirname "$0")"; pwd)
B_PROJECT_DIR="$A_PROJECT_DIR/rn_module"   # B 工程(RN)目录
B_REPO_URL="https://your.git.repo/B.git"  # ️ 替换为真实的 RN 工程仓库地址
B_BRANCH="main"                           # B 工程使用的分支
LAST_COMMIT_FILE="$A_PROJECT_DIR/.last_rn_commit"

ASSETS_DIR="$A_PROJECT_DIR/app/src/main/assets"
RES_DIR="$A_PROJECT_DIR/app/src/main/res"
# ===================

echo "==========================="
echo " [1] 检查 B 工程是否存在"
echo "==========================="

if [ ! -d "$B_PROJECT_DIR/.git" ]; then
  echo " 未找到 B 工程,正在 clone..."
  git clone -b "$B_BRANCH" "$B_REPO_URL" "$B_PROJECT_DIR"
else
  echo "✅ B 工程已存在,拉取最新代码..."
  cd "$B_PROJECT_DIR"
  git fetch origin
  git checkout "$B_BRANCH"
  git pull origin "$B_BRANCH"
fi

echo ""
echo "=============================="
echo " [2] 检查 RN 提交是否更新"
echo "=============================="

cd "$B_PROJECT_DIR"
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
LATEST_COMMIT=$(git rev-parse "$CURRENT_BRANCH")

if [ -f "$LAST_COMMIT_FILE" ]; then
  LAST_COMMIT=$(cat "$LAST_COMMIT_FILE")
else
  LAST_COMMIT=""
fi

echo " 当前分支: $CURRENT_BRANCH"
echo " 最新提交: $LATEST_COMMIT"
echo " 上次构建: $LAST_COMMIT"

if [ "$LATEST_COMMIT" != "$LAST_COMMIT" ]; then
  echo ""
  echo "================================"
  echo "⚙️  [3] 检测到更新,准备打包 JS Bundle"
  echo "================================"

  yarn install

  # 确保目标目录存在
  mkdir -p "$ASSETS_DIR"
  mkdir -p "$RES_DIR"

  npx react-native bundle \
    --platform android \
    --dev false \
    --entry-file index.js \
    --bundle-output "$ASSETS_DIR/index.android.bundle" \
    --assets-dest "$RES_DIR"

  echo "$LATEST_COMMIT" > "$LAST_COMMIT_FILE"

  echo "✅ JS Bundle 生成完成"
else
  echo "✅ 没有新提交,跳过 JS Bundle 打包"
fi

echo ""
echo "============================"
echo " [4] 开始打包 A 工程 APK"
echo "============================"

cd "$A_PROJECT_DIR"
./gradlew clean assembleRelease

echo ""
echo "✅ 全部流程完成:APK 打包成功"
使用说明
  1. 将脚本保存为pre_build_rn_sync.sh,放入 A 工程根目录;

  2. 替换脚本中的B_REPO_URL为你实际的 RN 项目地址;

  3. 赋予执行权限:

chmod +x pre_build_rn_sync.sh
  1. 使用方式:

./pre_build_rn_sync.sh
高级用法:集成到 Gradle 构建中

app/build.gradle中加入:

tasks.whenTaskAdded { task ->
    if (task.name == "preBuild") {
        task.doFirst {
            println " 正在同步 RN 工程..."
            exec {
                commandLine 'bash', "${rootDir}/pre_build_rn_sync.sh"
            }
        }
    }
}

这样,在你执行./gradlew assembleRelease的时候,系统会自动帮你检查并生成 bundle,无需再手动运行脚本。

注意事项

  • 请确保rn_module是一个合法的 RN 工程,结构完整;

  • node,yarn,npx必须已安装并在 PATH 中可用;

  • bundle-outputassets-dest目录路径要与实际项目结构匹配;

  • 若你使用 CI 工具(如 Jenkins),可直接将此脚本加入流水线前置任务。

结语

一个优雅的脚本,胜过无数的手动操作。这个脚本既能检测 Git 提交变更,又能自动化地集成 React Native 与原生工程的打包流程,极大提升了构建效率和团队协作体验

如果你也在做 Hybrid 架构,不妨收藏此脚本,或动手为团队搭建一套构建自动化流程!

如果这篇文章对你有帮助,欢迎转发、点赞或留言交流。你也可以评论告诉我你项目中遇到的实际构建问题,我将为你继续定制优化方案

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
胖东来闭店后续!街边摊贩哭诉,街道人气凄凉,结局没有赢家!

胖东来闭店后续!街边摊贩哭诉,街道人气凄凉,结局没有赢家!

草叶君
2026-08-22 16:25:38
重磅!央行刚刚公告,禁止非法买卖人民币!禁止预售纪念币!

重磅!央行刚刚公告,禁止非法买卖人民币!禁止预售纪念币!

天天币钞
2026-08-22 09:54:13
白魔给火箭留下的资产,火箭拿到了个反向白魔

白魔给火箭留下的资产,火箭拿到了个反向白魔

慕雨遥长p
2026-08-22 13:56:25
国羽2单项有望包揽,男单新世界第一即将诞生,附世锦赛22日赛程

国羽2单项有望包揽,男单新世界第一即将诞生,附世锦赛22日赛程

佑铭羽球
2026-08-22 04:20:08
那英北京开演唱会,王菲和女儿窦靖童送花篮,手写贺卡显与众不同

那英北京开演唱会,王菲和女儿窦靖童送花篮,手写贺卡显与众不同

柒佰娱
2026-08-22 18:06:15
再打下去要亡国了!俄军势如破竹,基辅大势已去,美国准备抽身

再打下去要亡国了!俄军势如破竹,基辅大势已去,美国准备抽身

二大爷观世界
2026-08-22 15:48:15
12800元!新机官宣:8月20日,正式发售!

12800元!新机官宣:8月20日,正式发售!

科技堡垒
2026-08-20 11:31:49
还剩7秒落后17分,假装握手偷袭抢断中国队,这到底什么球队啊…

还剩7秒落后17分,假装握手偷袭抢断中国队,这到底什么球队啊…

刺猬篮球
2026-08-21 21:34:27
全世界都会看错一个人,这个人就是特朗普,被好多媒体塑造成一个低智、行为不正常的大嘴,但他其实并不是一个简单靠运气走到今天的人

全世界都会看错一个人,这个人就是特朗普,被好多媒体塑造成一个低智、行为不正常的大嘴,但他其实并不是一个简单靠运气走到今天的人

扶苏聊历史
2026-08-22 16:04:53
北大教授张丹丹“灵活就业是福利,我们朝九晚五牺牲自由”引热议,胡锡进劝道歉,南大博士回怼

北大教授张丹丹“灵活就业是福利,我们朝九晚五牺牲自由”引热议,胡锡进劝道歉,南大博士回怼

东东趣谈
2026-08-21 11:56:23
辽宁一处长在单位门口遭枪击 凶手25年未找到 女儿:被民警配枪护学近一年 警方:正进一步加大侦办力度

辽宁一处长在单位门口遭枪击 凶手25年未找到 女儿:被民警配枪护学近一年 警方:正进一步加大侦办力度

红星新闻
2026-08-21 15:01:26
精日分子跑去靖国神社“表忠心”,反被日本人当反日分子揍了

精日分子跑去靖国神社“表忠心”,反被日本人当反日分子揍了

不掉线电波
2026-08-18 14:09:23
手机重启一次,等于深度清理!这样做才是正确的!90%人都做错了

手机重启一次,等于深度清理!这样做才是正确的!90%人都做错了

小柱解说游戏
2026-08-21 00:24:40
这5个行业,已经发不出工资了!真的很严重了

这5个行业,已经发不出工资了!真的很严重了

细说职场
2026-08-21 17:09:10
澳大利亚人命令莫迪,必须把你家三哥全接走,不然我们就杀光他们。

澳大利亚人命令莫迪,必须把你家三哥全接走,不然我们就杀光他们。

回京历史梦
2026-08-22 13:23:36
哈里梅根官宣后,王室成员集体亮相,安妮长公主立场强硬提点威廉

哈里梅根官宣后,王室成员集体亮相,安妮长公主立场强硬提点威廉

一窥究竟
2026-08-22 12:14:03
第一批梭子蟹受害者已经出现……

第一批梭子蟹受害者已经出现……

南通濠生活
2026-08-21 08:39:06
美媒给史上最乱东部评冠军概率:热火得克莱后8%,尼克斯22%第二

美媒给史上最乱东部评冠军概率:热火得克莱后8%,尼克斯22%第二

你的篮球频道
2026-08-22 11:08:17
亲手培养的AI天才全跑了!梁文锋杨植麟出走,广东痛失千亿帝国!

亲手培养的AI天才全跑了!梁文锋杨植麟出走,广东痛失千亿帝国!

卷史
2026-08-20 11:42:03
不走了!CBA顶级控卫与北京首钢达成顶薪续约合同,李楠盼来夺冠拼图

不走了!CBA顶级控卫与北京首钢达成顶薪续约合同,李楠盼来夺冠拼图

老叶评球
2026-08-22 16:10:52
2026-08-22 18:39:00
君伟说
君伟说
分享职场故事
482文章数 48关注度
往期回顾 全部

科技要闻

苹果裁员200人:Vision Pro砍游戏团队

头条要闻

男孩被两人无故掌掴致伤 一人系警察一人事业单位就职

头条要闻

男孩被两人无故掌掴致伤 一人系警察一人事业单位就职

体育要闻

枪手赚翻!4000万新援揭幕战8分钟策动2球

娱乐要闻

《空枪》预测票房缩水,手握王炸都没赢

财经要闻

蔡昉解读经济:扩大消费需求的政策思考

汽车要闻

2026成都车展的顶流选手 硬派方盒子享界 G9

态度原创

健康
时尚
旅游
亲子
军事航空

“矫正神器”真能治好脊柱侧弯吗?

从追星到追光,年轻女性的消费逻辑又变了

旅游要闻

潍坊诸城“诗心文旅·助力消费”活动启动

亲子要闻

马筱梅为避免划伤幼子放弃美甲,当妈前后精致反差太过戳心

军事要闻

披露林肯号航母内幕的美国军报多人被炒

无障碍浏览 进入关怀版