OpenHarmony在gitee上的推送流程 原创 精华

HarmonyOS实习生
发布于 2024-8-23 10:28
浏览
0收藏

@toc

现在,假设你有幸成为了一名HarmonyOS部的实习生,你可能没有机会接触到公司的核心机密业务——也就是所谓的“黄区”,但其实你有机会学习和参与到Gitee上开源的OpenHarmony项目中,这是“蓝区”的工作。蓝区的代码比黄区的版本滞后大约两年,而且几乎所有的内部员工都集中在黄区,蓝区的代码维护相对缺乏,你可能很难找到经验丰富的人来指导你。在这样的环境中,作为实习生可能会面临艰难的挑战。
然而,正如每一位华为人所应具备的素质一样,关键时刻勇挑重担,敢于进入无人区是至关重要的。作为锁屏开发小组的一员,我机缘巧合下非常幸运地遇到了HarmonyOS部里少见的一位专注于蓝区代码开发的专家,尽管他是一名外协员工(工号以WX开头)。没有他的帮助和指导,我的实习可能就会变得毫无成果,而你也许就无法阅读到这篇分享。因此,在我眼中,无论正式员工还是外协员工都是大佬。
现在开始进入正题,如何对蓝区代码进行修改,并利用git推送合入到gitee上。

一、建立自己的Fork仓与分支

假设你也负责蓝区锁屏的项目,那么这就是你工作的总仓:https://gitee.com/openharmony/applications_screenlock
首先点击Fork,建立你自己的私仓。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击Fork及确认后,这就是你的私仓了,它的标题从OpenHarmony/ applications_screenlock变成了zoujunjie/ applications_screenlock。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击master,新建一个分支,不妨命名为common_master。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击确定后,返回私仓界面,点击克隆。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
复制第二段git clone的代码,在这段代码后加入 -b common_master,即:

  • git clone https://gitee.com/zou_jun_jie/applications_screenlock.git -b common_master
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    接下来,新建一个文件夹,不妨命名为Test,准备往里面clone代码。
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    进入Test后,记得电脑提前下载好git,然后git bash一下。提示:一定要在Test里git bash,这样待会儿整个文件夹才能放在Test中。
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    接着,鼠标右键,点击Paste,将代码复制其中。
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    回车后,就会自动克隆你Fork仓下的common_master分支。克隆成功后,结果如下图所示。
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区

二、针对issues修正代码bug

现在请回到Openhamony的总仓,点击issues。Issues通常是测试提上来的,他们测试出锁屏代码里的bug后,就会在issues里提单。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
现在我们来解决一个我自己随便造的issues,当你有能力后,希望你可以解决页面下方测试们提出的专业issues。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
现在将刚刚克隆的工程文件夹拖入桌面的Deveco 4.0中。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
环境问题自动配置好后,如图所示。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
现在我们对下面这个文件进行修改(该单个文件与锁屏工程无关,因此可以放心修改)。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
不妨将第25行的字号从50修改为100。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
咱们就修改这么多吧,可以关闭Deveco,去推送代码了。

三、推送代码

双击进入工程文件夹。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
在该工程文件夹内git bash。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
首先,输入【git status】,意为是查看代码修改状态(红色的为作出修改的文件)。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
第二步,输入【git add .】(add后有一个空格与小数点),意为将所有该目录下的修改文件提交到暂存区。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
第三步,再次输入【git status】,意为再次检查代码状态(绿色的为暂存区内容)。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
第四步,【git commit -sm ‘修改名’】,意为将暂存区内容推到本地仓库(-s 是签订dco协定),修改名自己随便设定。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
最后,输入【git push】,自动推送到gitee的私仓的common_master分支下。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
回到私仓界面,可以看到推送成功。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区

四、建立PR,解决issues

首先,在私仓点击Pull Request。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
接着,点击新建PR。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
把源分支改为刚刚自己新建的common_master。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
起一个合理的标题,写一段内容,接着就可以点击创建PR了。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
现在,这个PR还需要关联上issues。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
遗憾的是,我发现只可以关联自己的issues,那就意味着不能关联上测试提上来的那个issue,因此咱们还要自己新建一个issue(整套流程结束之后,找相关人员关闭原测试提的issue即可)。
来到总仓,点击issues,新建issue。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
新建的issue没有太多讲究,随意即可。现在回到PR中,关联issues。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
现在来到评论区,它让我们评论 “start build”。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
接着,它会告诉我们门禁已经启动,大概要等20分钟,才会跑出结果。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点进链接后,会看到当前的运行情况。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
等待期间,可以在PR界面点击“文件”,查看我们修改代码的具体位置。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
20分钟过去后,点进链接,查看情况。点击hap_build的“通过”。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击日志详情,再点击version下的唯一一行,最后点击文件名下的链接,开始下载gz文件。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
下载完成后,解压。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击进入,点击hap。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
点击scrlck文件夹。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
这就是我们需要的锁屏hap包。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区

五、推入DAYU开发板

恭喜你快要完成全部的任务,现在你需要找你的导师,拿到DAYU开发板。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
两根线,黑色接电源,蓝色接你电脑的主机。接着请你的导师帮忙进行烧录,当时是外协大佬帮我烧录的,整个暑假也就是一开始进行了一次烧录,后面就不需要烧录了,所以我不记得是怎么弄的。
烧录完后,开发板可以正常进行界面。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
接着,把刚刚的hap包与接下来一个bat脚本放入同一个文件夹。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
把hap文件重命名为SystemUI-ScreenLock.hap(非常重要,要与bat中的代码相对应),bat文件的内容为:

  • hdc shell mount -o rw,remount /

  • hdc shell rm -rf /system/app/com.ohos.systemui/SystemUI-ScreenLock.hap

  • hdc file send SystemUI-ScreenLock.hap /system/app/com.ohos.systemui/SystemUI-ScreenLock.hap

  • pause

  • hdc shell rm -rf /data/*

  • hdc shell reboot

  • pause
    OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
    这段代码是一系列HDC(HarmonyOS Debug Client)命令,用于在华为的HarmonyOS操作系统上执行一系列操作。下面是对每条命令的解释:

  • hdc shell mount -o rw,remount /
    这条命令用于重新挂载根文件系统(“/”),以读写模式(“rw”)并重新挂载(“remount”)。这通常是为了在设备上进行文件操作之前,确保文件系统是可写的。

  • hdc shell rm -rf /system/app/com.ohos.systemui/SystemUI-ScreenLock.hap
    这条命令用于删除指定路径下的SystemUI-ScreenLock.hap文件。rm是删除命令,-r参数表示递归删除,即如果指定的是目录,则删除目录及其所有子目录和文件。-f参数表示强制执行,不提示确认。

  • hdc file send SystemUI-ScreenLock.hap /system/app/com.ohos.systemui/SystemUI-ScreenLock.hap
    这条命令用于将本地的SystemUI-ScreenLock.hap文件发送到设备上指定的路径。file send是HDC中用于文件传输的命令。

  • pause
    这条命令用于暂停执行,等待用户输入以继续。这通常用于调试过程中需要手动检查或确认某些操作后再继续执行。

  • hdc shell rm -rf /data/*
    这条命令用于删除/data目录下的所有文件和目录。*是一个通配符,代表/data目录下的所有内容。

  • hdc shell reboot
    这条命令用于重启设备。

  • pause
    再次暂停执行,等待用户输入。

这段代码是外协大佬给我的,专用于删除开发板中的SystemUI-ScreenLock.hap文件后再推入我刚生成的SystemUI-ScreenLock.hap文件。因此,如果你是其他的项目,问问你的导师删除与推送哪一个hap。
此外,这段代码出现了两次pause,所以运行过程中需要点两下任意键。

六、联系审查人,合入代码,删除原issue

推入hap后,如果测试没有问题,那么就可以联系审查人,让他把你的RR合入到总仓。审查人的名字在下图中。
OpenHarmony在gitee上的推送流程-鸿蒙开发者社区
同时再联系对应人员删除原来测试提上去的那个issue,具体是谁要问你导师,这样就大功告成了。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-8-25 17:40:43修改
4
收藏
回复
举报
4条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

牛啊,感谢大佬分享

回复
2024-8-23 10:42:44
HarmonyOS实习生
HarmonyOS实习生 回复了 红叶亦知秋
牛啊,感谢大佬分享

大佬见笑了

(〃'▽'〃)

回复
2024-8-23 11:00:16
牧南牧南
牧南牧南

赞👍

回复
2024-9-4 10:25:52
陈浩南xxx
陈浩南xxx

一入鸿蒙深似海。

回复
2024-9-9 09:59:21
回复
    相关推荐