#夏日挑战赛# 鸿蒙hap打包自动写入构建时间 原创 精华
jokerisme
发布于 2022-7-20 20:24
浏览
0收藏
前言
我们编译鸿蒙hap包的时候,往往希望把当前打包的时间写入鸿蒙应用里面,安卓的的VersionCode,VersionName是在build.gradle中配置,而鸿蒙则是config.json,在json中配置的缺点是不能运行代码。通常android是通过调用一个函数获取当前时间,在BuildConfig中新建一个成员,将时间赋值给当前变量,当然也可以把事件赋值给VersionName。但是鸿蒙却行不通。
本文提供一种将当前构建时间写入versionName的思路,只是起到抛砖引玉的作用,有更好的方案评论区见!
思路
1.我们在模块下的build.gradle中可以定义一个获取当前时间的函数
2.ohos闭包中有个outgoingVariants变量,通过outgoingVariants.configure()或者outgoingVariants.outputs.each()可以执行我们的任务,并且是在编译hap之前执行
3.新建一个任务,读取工程目录下的config.json文件,找到versionName的内容,将步骤1的时间替换掉
效果图
实现
- 定义获取时间的函数
- 新建一个任务读取config.json,并替换versionName的内容
-
build
编译时,查看我们任务确实先执行了
-
测试
index.ets
留坑:
- 上面读取Config.json的数据并替换代码比较丑陋,但是在鸿蒙的build.gradle不能使用ZSONObject,JsonObject这些json解析类,只能用最原始读取字符串的方式,知道的同学不吝赐教
- 本想在每次打包的时候,将hap包的名字也带上时间,比如entry-debug-rich-signed.hap改成entry-debug-rich-signed20200720.hap,但是不知道在build.gradle用哪个变量的任务去做,知道的同学不吝赐教
总结:
总体思路:获取当前时间,读取config.json,替换内容让后重新写入
源码:
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-7-20 20:28:53修改
赞
2
收藏
回复
2
2
相关推荐
outgoingVariants变量这个点楼主发现的妙啊,感谢分享思路。
API8/API9使用hvigorfile.js来构建hap,但是网上没有找到如何在里面自定义构建任务,如果可以的话,按照这种思路也行的通,如果知道的话,请指导一下