本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、概述

调试签名是HarmonyOS应用开发过程中的重要环节,用于在开发调试阶段对应用进行签名认证。DevEco Studio提供了自动签名和手动签名两种方式,满足不同开发场景的需求。

二、签名方式对比

2.1 自动签名

  • 适用场景:常规开发调试
  • 特点:便捷快速,由DevEco Studio自动完成
  • 版本要求:从DevEco Studio 6.0.0 Beta5开始支持
  • 分类
    • 关联注册应用签名:与AGC应用绑定
    • 未关联注册应用签名:未与AGC应用绑定

2.2 手动签名

  • 适用场景
    • 跨设备调试
    • 跨应用交互调试
    • 断网环境下调试
    • 多用户协作开发
    • 使用受限开放权限
    • 需要华为业务方审核的权限
    • 需要配置指纹的kit
    • 应用发布场景

三、自动签名

3.1 前提条件

  • 确保本地系统时间与北京时间(UTC/GMT+8.00)保持一致
  • 对于关联注册应用签名,需要登录华为开发者账号

3.2 操作步骤

3.2.1 设备连接
  1. 连接真机设备或启动模拟器
  2. 如果连接多个设备,自动化签名会将所有设备信息写入证书文件
3.2.2 关联注册应用签名
  1. 进入 File > Project Structure... > Project > Signing Configs
  2. 勾选 "Associate with registered application"
  3. 如未登录,点击Sign In进行登录
  4. DevEco Studio会根据Bundle name自动校验应用
    • 如果在AGC查询到应用:进行自动签名
    • 如果未查询到或应用冲突:根据提示修改后重新签名
3.2.3 开通开放能力
  1. 点击 "Enable open capabilities"
  2. 支持开通的开放能力:
    • Push Kit(推送服务)
    • Device status detection(应用设备状态检测)
    • Map Kit(地图服务)
    • Safety Detect(安全检测服务)
3.2.4 ACL权限配置
  1. 在配置文件中添加ACL权限信息
  2. 如果应用已在AGC申请该权限:点击OK继续签名
  3. 如果应用未申请该权限:签名失败,需要跳转至AGC申请权限

3.3 注意事项

  • 元服务签名:元服务的自动签名必须关联注册应用
  • 权限申请:在申请ACL权限前,需审视是否符合受限权限的使用场景

四、手动签名

4.1 必须使用手动签名的场景

4.1.1 权限相关场景
  • 使用不支持自动签名的受限开放权限
  • 需要华为业务方审核的权限(如华为账号一键登录)
  • kit需要配置指纹
4.1.2 开发协作场景
  • 跨设备调试
  • 跨应用交互调试
  • 多用户共同开发且需要共享密钥
  • 断网情况下调试
4.1.3 发布场景
  • 应用商店发布必须使用手动签名

4.2 手动签名优势

  • 灵活性:支持更复杂的开发场景
  • 可控性:开发者完全控制签名过程
  • 协作性:便于团队协作开发
  • 兼容性:支持所有类型的权限和功能

五、总结

5.1 开发阶段建议

  1. 初期开发:使用自动签名快速开始调试
  2. 功能测试:根据测试需求选择合适的签名方式
  3. 团队协作:建立统一的签名证书管理机制

5.2 证书管理建议

  1. 备份证书:妥善保管签名证书和密钥
  2. 版本控制:管理不同环境的签名配置
  3. 安全存储:使用安全的密码管理工具存储敏感信息

六、常见问题

6.1 签名失败常见原因

  1. 系统时间不同步:确保本地时间与北京时间一致
  2. 权限未申请:需要先在AGC申请相应权限
  3. 网络问题:检查网络连接是否正常
  4. 证书冲突:检查是否存在证书冲突问题

6.2 解决方案

  1. 时间同步:调整系统时间设置
  2. 权限申请:按照提示完成权限申请流程
  3. 网络检查:确保网络连接稳定
  4. 冲突解决:根据错误提示信息修改配置

七、进阶使用技巧

7.1 多环境签名配置

// 示例:多环境签名配置管理
signingConfigs {
    develop {
        storeFile file('develop.keystore')
        storePassword 'develop_password'
        keyAlias 'develop_key'
        keyPassword 'develop_key_password'
    }
    
    production {
        storeFile file('production.keystore')
        storePassword 'production_password'
        keyAlias 'production_key'
        keyPassword 'production_key_password'
    }
}

7.2 自动化签名脚本

#!/bin/bash
# 自动签名脚本示例
echo "开始自动签名过程..."

# 检查系统时间
if ! checkSystemTime; then
    echo "系统时间不同步,请调整后重试"
    exit 1
fi

# 检查网络连接
if ! checkNetwork; then
    echo "网络连接异常,请检查后重试"
    exit 1
fi

# 执行签名操作
echo "签名执行中..."
# 签名命令...

八、总结

8.1 选择建议

  1. 个人开发:优先使用自动签名,简便高效
  2. 团队项目:建议使用手动签名,便于协作和管理
  3. 复杂功能:涉及特殊权限时使用手动签名
  4. 发布准备:发布前切换到手动签名

8.2 注意事项

  1. 时间同步:始终确保系统时间准确
  2. 权限规划:提前规划并申请所需权限
  3. 证书安全:妥善管理签名证书和密钥
  4. 版本管理:维护不同环境的签名配置

8.3 其他

  1. 开发初期使用自动签名快速验证
  2. 涉及团队协作时切换到手动签名
  3. 定期检查和更新签名配置
  4. 建立完善的证书管理流程
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐