[第二课]鸿蒙本地开发与linux环境编译的配合

上一课,我们解决了编译rom的问题,但我们做改版不可能在Linux环境里,还是要回到鸿蒙本地环境的。
但是,通过融合开发引擎的共享目录是无法完成编译的(谁试谁知道)

这节课要讲的这个方案的核心就一句话:代码放在共享目录里编辑,但编译时先复制到 Linux 自己的“内部工作区”,编译完再把产物拿回来。
为什么这样行得通?因为融合开发引擎的共享目录(/mnt/linux_share)权限比较特殊,编译工具在里面会“闹脾气”。而 Linux 环境自己的目录(比如 /home/你的用户名/ 下面)权限是正常的,编译工具在里面就能好好干活。

第一步:一次性准备(只需要做一次)

  1. 在 Linux 内部建一个“编译工作区”

打开融合开发引擎的终端,执行下面这条命令,创建一个专门用来编译的文件夹:

mkdir -p ~/build_workspace

这个 ~/build_workspace 就是 Linux 环境自己的目录,权限完全正常,编译工具在里面不会报错。

  1. 把“鸿蒙侧工程目录”和“编译产物要放哪”想清楚

假设你的鸿蒙工程在共享目录里,路径大概是这样的:
/mnt/linux_share/你的工程文件夹

你希望编译出来的.gba文件,最后能出现在鸿蒙侧方便你使用。那就在共享目录里找个地方放产物,比如:
/mnt/linux_share/编译产物

你只需要知道这两个路径大概是什么,下一步写脚本时会用到。

  1. 创建编译脚本(把下面的内容复制进去,改几处地方)
    在终端里执行:
nano ~/build_workspace/build.sh

因为nano真的更人性化,所有我单独安装了,洗头自带的有vim可以用。
然后把下面这段内容完整复制进去:

#!/bin/bash

# ===== 需要你修改的地方 =====
# 你鸿蒙侧绿宝石工程文件夹的实际路径
PROJECT_SOURCE="/mnt/linux_share/storage/Users/currentUser/你的绿宝石工程"

# 编译产物 (.gba) 想放回共享目录的哪个位置
OUTPUT_DEST="/mnt/linux_share/storage/Users/currentUser/编译产物"
# ===========================

echo "开始增量同步绿宝石工程到 Linux 工作区..."

mkdir -p ~/build_workspace/emerald
cd ~/build_workspace/emerald

# 增量同步:只传改动的源码,排除 build 这种大目录
rsync -ac --delete \
  --exclude 'build' \
  "$PROJECT_SOURCE/" ~/build_workspace/emerald/

if [ $? -ne 0 ]; then
    echo "同步失败!请检查 PROJECT_SOURCE 路径。"
    exit 1
fi

echo "同步完成,开始编译绿宝石 ROM..."

# 清理旧的编译结果,然后开始编译
#make clean
make -j$(nproc)

if [ $? -ne 0 ]; then
    echo "编译失败!请查看上方的错误信息。"
    exit 1
fi

echo "编译成功,开始复制 ROM 到共享目录..."

mkdir -p "$OUTPUT_DEST"
# 绿宝石默认生成的 ROM 叫 pokeemerald.gba,在工程根目录
cp pokeemerald.gba "$OUTPUT_DEST/"

echo "完成!ROM 已经出现在:$OUTPUT_DEST"
  1. 保存并赋予执行权限
    在 nano 编辑器里,按 Ctrl + O 保存,按 Enter 确认,再按 Ctrl + X 退出。
    然后执行:
chmod +x ~/build_workspace/build.sh

这样脚本就有“运行”的权限了。

  1. 修改脚本里的路径
    用 nano 再打开脚本,把你实际的信息填进去:
nano ~/build_workspace/build.sh

需要改的就是开头那几行带 # 注释的地方:

PROJECT_SOURCE:你的鸿蒙工程在共享目录里的实际路径。如果不确定,可以在终端里输入 ls /mnt/linux_share/ 看看里面有什么。

OUTPUT_DEST:你希望产物出现在哪里。

改完保存退出。

第二步:日常使用(每次改完代码后)

  1. 在鸿蒙侧正常编辑你的代码

你还是在原来的地方写代码,保存。

  1. 在 Linux 终端里运行一条命令
bash ~/build_workspace/build.sh

然后等它跑完。脚本会自动做这些事:

把你的工程从共享目录复制到 Linux 内部工作区

在内部工作区里执行编译(这里权限正常,不会出错)

把编译出的 .gba 复制回共享目录里你指定的位置

  1. 去共享目录拿产物

编译完成后,去你设置的 OUTPUT_DEST 目录里,就能找到 .gba文件了。

支持这篇文章点赞、收藏或分享给朋友
DISCUSSION

发表评论

留下你的想法

输入 @用户名 可以提及站内用户0 / 5000

加入QQ群