HarmonyOS 配置应用自定义签名
在 HarmonyOS 应用开发过程中,运行鸿蒙应用到真机是需要签名的,开发同学往往会选择自动签名,但是自动签名不同的人不同的开发者账号,通过自动签名后的信息都是不同的,这时候签名信息的管理就显得尤为重要。为了提升团队协作效率、减少配置冲突,我们可以将签名信息配置为可自定义文件,以便团队成员根据自身需求灵活管理。本文将介绍如何通过 signdata.json
文件实现签名配置的模块化与自动化。
一、创建签名信息文件(signdata.json)
首先,我们需要在项目根目录下创建一个 JSON 文件,用于存放签名信息。文件名可根据实际情况自定义,比如我们命名为 signdata.json
。文件内容结构如下:
{
"certpath": "xxxx.cer",
"keyAlias": "debugKey",
"keyPassword": "myKeyPassword",
"profile": "xxxx.p7b",
"signAlg": "xxxx",
"storeFile": "xxxx.p12",
"storePassword": "myStorePassword"
}
✅ 建议不要将此文件上传至版本控制系统(如 Git),可通过
.gitignore
忽略该文件,以保障签名信息的私密性。
可以在工程级.gitignore文件里添加 /signdata.json
二、在工程级 hvigorfile.ts
中引入签名信息
在项目的根级别 hvigorfile.ts
文件中,导入我们刚刚创建的 signdata.json
文件。示例代码如下:
import signData from './signdata.json';
引入成功后,即可在构建配置中使用相关信息,在plugins平级添加config节点,在config添加子节点ohos,代码如下:
import { appTasks } from '@ohos/hvigor-ohos-plugin';
import * as data from "./signdata.json";
const needsSigning = true
export default {
system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
plugins:[], /* Custom plugin to extend the functionality of Hvigor. */
config:{
ohos:{
}
}
}
三、封装获取签名信息的函数
为了代码更清晰、逻辑更独立,我们可以在 hvigorfile.ts
中封装一个函数,用于获取签名配置:
/* 从自定义data.json文件获取签名信息 */
function getSigningConfig() {
if(needsSigning){
return{
signingConfig:{
"type": "HarmonyOS",
"material": {
"certpath": data.certpath,
"storePassword": data.storePassword,
"keyAlias": data.keyAlias,
"keyPassword": data.keyPassword,
"profile": data.profile,
"signAlg": data.signAlg,
"storeFile": data.storeFile
}
}
}
}
}
这样,其他构建模块只需调用该函数即可获得完整签名信息,便于后续维护和多成员并行开发。
四、将自动签名内容抽离到 signdata.json
在原有构建配置中,自动签名的签名信息通常直接写在 build-profile.json5s
中,随着项目复杂度的增加,人员设备的变动等,这种方式不利于维护。
我们可以将build-profile.json5s
中的signingConfigs
节点里的代码迁移到signdata.json
中,如下:
{
"certpath": "/Users/admin/.ohos/config/default_signdata_example_ewsaR-SOaBqfod-eIAwDgAeE2lBwrQn-8NRU01BDOX4=.cer",
"keyAlias": "debugKey",
"keyPassword": "0000001BD18F617B42AC67518AFAAEED6F111AE5DD2410CC1130D03A38A0941EF12B7CF6C70716977AB5ED",
"profile": "/Users/admin/.ohos/config/default_signdata_example_ewsaR-SOaBqfod-eIAwDgAeE2lBwrQn-8NRU01BDOX4=.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "/Users/admin/.ohos/config/default_signdata_example_ewsaR-SOaBqfod-eIAwDgAeE2lBwrQn-8NRU01BDOX4=.p12",
"storePassword": "0000001B70A28142A3555F7A5AA5F7E8863681B049F1E8D8D306673CDD4B81F82008D7A2F435F192E76506"
}
迁移至 signdata.json
中,并通过hvigorfile.ts
的 getSigningConfig()
函数引用。最终,在构建模块中使用如下方式配置:
export default {
system: appTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
plugins:[], /* Custom plugin to extend the functionality of Hvigor. */
config:{
ohos:{
overrides:getSigningConfig()
}
}
}
这样即可实现签名信息的集中管理与代码分离。
五、总结
在不方便创建debug签名的时候,通过将签名信息抽离到 signdata.json
文件,并在 hvigorfile.ts
中进行统一引用,我们可以有效地提升代码可读性与团队协作效率:
- 每位成员可本地维护自己的签名文件;
- 防止签名信息冲突;
- 签名信息不再硬编码,增强安全性;
- 配置变更更灵活,维护成本更低。
当然最好的办法是,是创建应用后,生成对应的debug签名,所有的成员共用一套debug签名,创建debug签名的方法可以参考官网:多人协作时DevEco Studio如何引用一份签名文件
更多推荐
所有评论(0)