OpenHarmony在gitee上的推送流程 原创 精华
@toc
现在,假设你有幸成为了一名HarmonyOS部的实习生,你可能没有机会接触到公司的核心机密业务——也就是所谓的“黄区”,但其实你有机会学习和参与到Gitee上开源的OpenHarmony项目中,这是“蓝区”的工作。蓝区的代码比黄区的版本滞后大约两年,而且几乎所有的内部员工都集中在黄区,蓝区的代码维护相对缺乏,你可能很难找到经验丰富的人来指导你。在这样的环境中,作为实习生可能会面临艰难的挑战。
然而,正如每一位华为人所应具备的素质一样,关键时刻勇挑重担,敢于进入无人区是至关重要的。作为锁屏开发小组的一员,我机缘巧合下非常幸运地遇到了HarmonyOS部里少见的一位专注于蓝区代码开发的专家,尽管他是一名外协员工(工号以WX开头)。没有他的帮助和指导,我的实习可能就会变得毫无成果,而你也许就无法阅读到这篇分享。因此,在我眼中,无论正式员工还是外协员工都是大佬。
现在开始进入正题,如何对蓝区代码进行修改,并利用git推送合入到gitee上。
一、建立自己的Fork仓与分支
假设你也负责蓝区锁屏的项目,那么这就是你工作的总仓:https://gitee.com/openharmony/applications_screenlock
首先点击Fork,建立你自己的私仓。
点击Fork及确认后,这就是你的私仓了,它的标题从OpenHarmony/ applications_screenlock变成了zoujunjie/ applications_screenlock。
点击master,新建一个分支,不妨命名为common_master。
点击确定后,返回私仓界面,点击克隆。
复制第二段git clone的代码,在这段代码后加入 -b common_master,即:
- git clone https://gitee.com/zou_jun_jie/applications_screenlock.git -b common_master
接下来,新建一个文件夹,不妨命名为Test,准备往里面clone代码。
进入Test后,记得电脑提前下载好git,然后git bash一下。提示:一定要在Test里git bash,这样待会儿整个文件夹才能放在Test中。
接着,鼠标右键,点击Paste,将代码复制其中。
回车后,就会自动克隆你Fork仓下的common_master分支。克隆成功后,结果如下图所示。
二、针对issues修正代码bug
现在请回到Openhamony的总仓,点击issues。Issues通常是测试提上来的,他们测试出锁屏代码里的bug后,就会在issues里提单。
现在我们来解决一个我自己随便造的issues,当你有能力后,希望你可以解决页面下方测试们提出的专业issues。
现在将刚刚克隆的工程文件夹拖入桌面的Deveco 4.0中。
环境问题自动配置好后,如图所示。
现在我们对下面这个文件进行修改(该单个文件与锁屏工程无关,因此可以放心修改)。
不妨将第25行的字号从50修改为100。
咱们就修改这么多吧,可以关闭Deveco,去推送代码了。
三、推送代码
双击进入工程文件夹。
在该工程文件夹内git bash。
首先,输入【git status】,意为是查看代码修改状态(红色的为作出修改的文件)。
第二步,输入【git add .】(add后有一个空格与小数点),意为将所有该目录下的修改文件提交到暂存区。
第三步,再次输入【git status】,意为再次检查代码状态(绿色的为暂存区内容)。
第四步,【git commit -sm ‘修改名’】,意为将暂存区内容推到本地仓库(-s 是签订dco协定),修改名自己随便设定。
最后,输入【git push】,自动推送到gitee的私仓的common_master分支下。
回到私仓界面,可以看到推送成功。
四、建立PR,解决issues
首先,在私仓点击Pull Request。
接着,点击新建PR。
把源分支改为刚刚自己新建的common_master。
起一个合理的标题,写一段内容,接着就可以点击创建PR了。
现在,这个PR还需要关联上issues。
遗憾的是,我发现只可以关联自己的issues,那就意味着不能关联上测试提上来的那个issue,因此咱们还要自己新建一个issue(整套流程结束之后,找相关人员关闭原测试提的issue即可)。
来到总仓,点击issues,新建issue。
新建的issue没有太多讲究,随意即可。现在回到PR中,关联issues。
现在来到评论区,它让我们评论 “start build”。
接着,它会告诉我们门禁已经启动,大概要等20分钟,才会跑出结果。
点进链接后,会看到当前的运行情况。
等待期间,可以在PR界面点击“文件”,查看我们修改代码的具体位置。
20分钟过去后,点进链接,查看情况。点击hap_build的“通过”。
点击日志详情,再点击version下的唯一一行,最后点击文件名下的链接,开始下载gz文件。
下载完成后,解压。
点击进入,点击hap。
点击scrlck文件夹。
这就是我们需要的锁屏hap包。
五、推入DAYU开发板
恭喜你快要完成全部的任务,现在你需要找你的导师,拿到DAYU开发板。
两根线,黑色接电源,蓝色接你电脑的主机。接着请你的导师帮忙进行烧录,当时是外协大佬帮我烧录的,整个暑假也就是一开始进行了一次烧录,后面就不需要烧录了,所以我不记得是怎么弄的。
烧录完后,开发板可以正常进行界面。
接着,把刚刚的hap包与接下来一个bat脚本放入同一个文件夹。
把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
这段代码是一系列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合入到总仓。审查人的名字在下图中。
同时再联系对应人员删除原来测试提上去的那个issue,具体是谁要问你导师,这样就大功告成了。
牛啊,感谢大佬分享
大佬见笑了
(〃'▽'〃)
赞👍
一入鸿蒙深似海。