鸿蒙学习实战之路-STG系列(2/11)-配置签名与权限申请

朋友们,上一篇我们介绍了 Screen Time Guard Kit 的基本概念,今天这篇我就手把手带你完成开发前的准备工作 - 配置签名和申请 ACL 权限。这步是必须要做的,不做的话你的应用根本用不了这个 Kit o(╯□╰)o

今天这篇,我会详细讲解如何配置签名、申请受限 ACL 权限,以及在项目中配置权限声明,全程不超过5分钟(不含权限审核时间)~


一、为什么要配置签名和申请权限?

1. 配置签名

签名就像是应用的"身份证",系统需要确认这个应用是谁开发的,有没有被篡改。对于 Screen Time Guard Kit 这样的敏感功能,签名验证更是必不可少。

2. 申请 ACL 权限

Screen Time Guard Kit 涉及到用户设备的时间管控和应用限制,属于敏感权限,需要经过华为官方审核才能使用。这就像家长给孩子配手机一样,得先证明你有这个能力和资格 _

🥦 西兰花警告:
ACL 权限申请需要 1 个工作日审核,记得提前申请!别等到项目上线前一天才想起来,那就惨了 o(╥﹏╥)o


二、配置签名

配置签名分为调试阶段和发布阶段两个步骤。

1. 调试阶段签名配置

调试阶段的签名主要用于开发测试,步骤如下:

步骤 1: 申请调试证书
  1. 登录 AppGallery Connect
  2. 进入你的项目,选择需要配置签名的应用
  3. 点击"项目设置" → “常规” → “SHA256 证书指纹”
  4. 点击"新增调试证书"
  5. 填写证书信息,生成调试证书

🥦 西兰花小贴士:
调试证书只能用于真机调试,不能用于发布应用。发布时需要重新申请发布证书~

步骤 2: 注册调试设备
  1. 在 AppGallery Connect 中,进入"项目设置" → “常规”
  2. 点击"调试设备" → “添加设备”
  3. 输入设备的序列号(SN号)
  4. 添加完成后,这个设备就可以使用调试证书运行应用了

🥦 西兰花小贴士:
设备的 SN 号可以在设备的"设置 → 关于手机"中找到。模拟器不需要注册,可以直接用~

步骤 3: 申请调试 Profile

Profile 文件就像是"通行证",告诉系统这个应用可以在哪些设备上运行。

  1. 在 AppGallery Connect 中,进入"项目设置" → “常规”
  2. 点击"添加" → “调试 Profile”
  3. 选择调试证书和调试设备
  4. 点击"生成",下载 Profile 文件
步骤 4: 手动配置签名信息
  1. 打开 DevEco Studio
  2. 选择你的项目,点击"File" → “Project Structure”
  3. 选择"Signing Configs"
  4. 勾选"Automatically generate signature"(自动生成签名)
  5. 或者选择"Manually configure signature"(手动配置签名),上传你刚才下载的 Profile 文件

🥦 西兰花小贴士:
开发调试阶段建议选择"自动生成签名",这样更方便。正式发布时再用手动配置~

2. 发布阶段签名配置

发布阶段的签名用于应用上架,步骤如下:

步骤 1: 申请发布证书
  1. 在 AppGallery Connect 中,进入"项目设置" → “常规”
  2. 点击"新增发布证书"
  3. 填写证书信息,生成发布证书

🥦 西兰花警告:
发布证书一定要保管好,丢失后无法找回,需要重新申请,而且会影响应用更新~

步骤 2: 申请发布 Profile 文件
  1. 在 AppGallery Connect 中,进入"项目设置" → “常规”
  2. 点击"添加" → “发布 Profile”
  3. 选择发布证书
  4. 在"申请权限"栏选中"受限ACL权限(HarmonyOS API9及以上)"选项
  5. 点击"选择",勾选已申请的 ohos.permission.MANAGE_SCREEN_TIME_GUARD 权限
  6. 点击"添加",下载 Profile 文件
步骤 3: 手动配置签名信息
  1. 打开 DevEco Studio
  2. 选择你的项目,点击"File" → “Project Structure”
  3. 选择"Signing Configs"
  4. 选择"Manually configure signature"(手动配置签名)
  5. 上传发布证书和 Profile 文件

🥦 西兰花警告:
发布 Profile 必须包含你申请的 ACL 权限,否则应用运行时会报错,说权限不足~


三、申请受限 ACL 权限

这是最关键的一步!Screen Time Guard Kit 需要申请 ohos.permission.MANAGE_SCREEN_TIME_GUARD 权限。

步骤 1: 登录 AppGallery Connect

  1. 访问 AppGallery Connect
  2. 登录你的华为开发者账号

步骤 2: 选择项目和应用

  1. 在"项目列表"中找到你的项目
  2. 点击项目名称进入
  3. 在应用列表中选择需要申请权限的应用

步骤 3: 进入 ACL 权限页面

  1. 点击左侧菜单的"项目设置"
  2. 选择"ACL权限"页签
  3. 这里会显示当前应用已申请和未申请的权限列表

步骤 4: 申请权限

  1. 在"未获取权限"区域,勾选"我已知晓"
  2. 在权限搜索框中输入"ohos.permission.MANAGE_SCREEN_TIME_GUARD"
  3. 找到权限后,勾选该权限
  4. 点击"申请"按钮

步骤 5: 填写申请原因

系统会要求你填写申请原因,这里要详细说明你的应用场景和为什么需要这个权限。

🥦 西兰花小贴士:
申请原因要写得具体一点,比如"开发家长控制应用,帮助家长管理孩子的屏幕使用时间"这样通过率更高~

示例申请原因:

应用类型:家长控制应用
功能说明:帮助家长限制孩子在指定时间段内使用游戏类应用,防止沉迷
使用场景:家长可以设置工作日 9:00-18:00 禁止游戏,每天总时长不超过 2 小时
隐私保护:所有操作都需要家长授权,不会收集儿童个人信息

步骤 6: 等待审核

提交申请后,华为会在 1 个工作日内审核。审核通过后,你会在 ACL 权限页面看到这个权限的状态变为"已获取"。

🥦 西兰花警告:
如果审核被拒绝,系统会说明原因。根据原因修改后可以重新申请,不用担心~


四、在项目中配置权限声明

权限申请通过后,还需要在项目的 module.json5 文件中声明这个权限。

1. 找到 module.json5 文件

module.json5 文件通常在项目的 entry/src/main 目录下。

2. 添加权限声明

打开 module.json5 文件,找到 requestPermissions 字段,添加权限声明:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "default",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.permission.MANAGE_SCREEN_TIME_GUARD"
      }
    ]
  }
}

🥦 西兰花小贴士:
如果 requestPermissions 字段不存在,就自己添加一个。注意 JSON5 的格式要正确,别少了逗号~


五、完整配置流程总结

整个配置流程就像这样:

调试阶段
    ↓
申请调试证书
    ↓
注册调试设备
    ↓
申请调试 Profile
    ↓
配置签名信息
    ↓
申请 ACL 权限(提前1天)
    ↓
等待审核(1个工作日)
    ↓
权限审核通过
    ↓
在 module.json5 中声明权限
    ↓
申请发布 Profile(包含 ACL 权限)
    ↓
配置发布签名
    ↓
应用发布

简单来说,就是"申请证书 → 申请权限 → 声明权限 → 配置签名",是不是超简单? (┓( ´∀` )┏


六、常见问题

1. 权限申请被拒绝怎么办?

检查申请原因是否写清楚了,重新提交申请。如果多次被拒绝,可以联系华为客服咨询具体原因。

2. Profile 文件下载失败怎么办?

检查网络连接,或者尝试刷新页面重新下载。如果还是不行,可以联系华为技术支持。

3. 签名配置后还是报错?

检查 Profile 文件是否正确,是否包含了 ACL 权限。如果没问题,可以尝试删除签名配置后重新配置。

4. 模拟器需要注册调试设备吗?

不需要,模拟器可以直接使用调试证书运行应用。


七、注意事项

🥦 西兰花警告:

  1. 提前申请权限: ACL 权限需要 1 个工作日审核,记得提前申请
  2. 保管好证书: 发布证书一定要备份,丢失后无法找回
  3. 权限名称要准确: ohos.permission.MANAGE_SCREEN_TIME_GUARD 一个字符都不能错
  4. Profile 必须包含权限: 发布 Profile 必须包含 ACL 权限,否则应用运行会报错
  5. module.json5 格式: 添加权限声明时注意 JSON5 格式,别少了逗号

八、文档资源

官方文档链接:


九、总结

配置签名和申请 ACL 权限是使用 Screen Time Guard Kit 的必要步骤,虽然有点繁琐,但为了安全和隐私保护,这些都是必须的。

核心要点:

  1. 调试阶段和发布阶段都需要配置签名
  2. ACL 权限需要提前 1 个工作日申请
  3. 发布 Profile 必须包含 ACL 权限
  4. 在 module.json5 中声明权限
  5. 保管好发布证书

配置完成后,就可以开始使用 Screen Time Guard Kit 的功能了 _


下一步行动

建议你:

  1. 先完成调试阶段的签名配置
  2. 提前申请 ACL 权限(别等上线前一天才想起来)
  3. 在 module.json5 中声明权限
  4. 等权限审核通过后,再配置发布签名
  5. 测试一下应用是否能正常运行

记住,不教理论,只给你能跑的代码和避坑指南! _


我是盐焗西兰花,
不教理论,只给你能跑的代码和避坑指南。
下期见!🥦

Logo

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

更多推荐