鸿蒙工程在云端跑通:从案例仓到手机上一局游戏
鸿蒙工程在云端跑通:从案例仓到手机上一局游戏
上一篇聊了「记忆翻牌」的实现细节,这次说说更前面的一段路——怎么把别人的鸿蒙案例仓,变成自己手机上能点开玩的一个 App。
本地做这件事,要先装 DevEco Studio、拉 SDK、配 node 和 jbr、起模拟器。四个小时里大概三小时在等下载。所以这次我换了个做法:全程在浏览器的云端环境里完成。
一、先把代码拿到手
案例详情页会给一个公开仓地址,形如 https://gitcode.com/.../HarmonyOS-APP-memory-card-game.git。直接 clone 就行,公开仓不需要账号。
拿到之后先别急着编译,花两分钟看三样东西:
- 根目录有没有
README.md - 有没有
harmony_app/(真正的工程在这层,不是仓库根) - 有没有
docs/(编译参数、环境变量基本都写在这)
这一步能省掉后面一半的瞎试。我第一次直接在仓库根敲编译命令,报了一堆「找不到 hvigorfile」,就是因为工程在下一层。
二、编译之前的三件事
第一件:SDK 版本要对上。
案例文档写的是 compile API 24(6.1.1),目标与兼容 API 23(6.1.0)。版本不匹配的报错长这样:00303217 Configuration Error,看着像配置错,其实多半是 SDK 路径指错了。
第二件:环境变量。
DEVECO_SDK_HOME、NODE_HOME、JAVA_HOME 三个都要有,而且 PATH 里得把它们排到前面。云端环境这些路径和本地不一样,照文档里的示例改成本机的实际路径,别直接抄。
第三件:local.properties。
harmony_app/local.properties 里的 sdk.dir 要指向真实 SDK 目录。这个文件常常不在仓库里(被 gitignore 了),需要自己建一个。
三、编译
进到 harmony_app/,跑:
hvigorw assembleHap --no-daemon --mode module -p product=default -p module=entry@default --console=plain
几个参数都别省:
--no-daemon:云端容器的资源有限,留着守护进程容易和下一次构建抢内存--console=plain:不加这个,日志会带一堆控制字符,出错时看不清-p product/-p module:多模块工程不指定就只打默认产物
成功的话产物在:
entry/build/default/outputs/default/entry-default-unsigned.hap
大小 380KB 左右。看到这个文件,说明编译这关过了。
顺带提醒:hvigorw --version 能敲出东西,才说明这条工具链真的可用。敲不出来先去查 NODE_HOME。
四、装到设备上
云端环境里可以用自带的云手机,也可以连本地真机。先确认设备在不在:
hdc list targets
有输出才有戏。空列表一般是模拟器还没起来,或者 hdc 服务和设备没握手完成。
然后装包:
hdc install -r entry/build/default/outputs/default/entry-default-unsigned.hap
-r 是覆盖安装,改完代码重装不用先卸。
装完桌面图标没刷新的话,直接起:
hdc shell aa start -b com.harmonypractice.memorycardgame -a EntryAbility
五、我踩的三个坑
坑一:hdc list targets 一直空。
不是命令错,是模拟器刚起来还没就绪。等 30 秒再敲一次,或者重启一下模拟器。
坑二:编译过了,装的时候报签名。
entry-default-unsigned.hap 是未签名包,装到调试设备上需要设备处于调试模式。云端云手机默认是开的,本地真机要在开发者选项里打开「USB 调试」和「允许安装未知来源」。
坑三:日志里全是噪音。
排查问题的时候别直接 hdc hilog,几万行刷屏。按应用名过滤:
hdc hilog | grep CardGame
崩溃类的问题换这个:
hdc hilog | grep -E "JsError|FATAL|CppCrash"
六、这条路值不值
对「只想验证一个想法」的场景,云端路径明显更划算:环境是现成的,工具链是现成的,注意力全在代码上。
代价也有:首次进环境要等,网络差的时候界面会慢半拍;容器有使用时长,长时间挂着会消耗额度,不用的时候记得关。
如果是要长期迭代的项目,本地环境该装还是得装。云端更适合「今天想看看这个案例长什么样」这种轻量场景。
最后
从 clone 到手机上能玩,顺利的话二十分钟。真正花时间的从来不是那几条命令,而是版本对不对、路径对不对、设备连没连上。
这三件事确认完,剩下的就是等编译进度条。
- 点赞
- 收藏
- 关注作者
评论(0)