【入门到实战】OpenHarmony南向子系统开发:应用特权配置指南

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


应用特权配置

应用特权是指应用所具备的一些高等级的特殊能力,比如限制应用不可被卸载、应用内数据不可被删除等。

OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单独配置的应用特权。当签名证书中配置的特权与白名单(install_list_capability.json)中特权相同时,以白名单的配置为主。

说明:

  • 应当注意不要滥用应用特权,避免造成用户反感甚至对用户造成侵权。
  • 直接修改应用Profile文件的方式,仅用于应用/服务调试阶段使用,不可用于发布上架应用市场。如果需要开发商用版本的应用,请在对应的应用市场进行发布证书和Profile文件的申请。

通用应用特权

简介

通用的应用特权是指应用在不同设备类型上都可以获得的特权,可分为以下几种:

权限描述
AllowAppDataNotCleared是否允许应用数据被删除。
AllowAppDesktopIconHide是否允许隐藏桌面图标。
AllowAbilityPriorityQueried是否允许Ability配置查询优先级。
AllowAbilityExcludeFromMissions是否允许Ability不在任务栈中显示。
AllowAppShareLibrary是否允许为其它应用提供应用间HSP能力。
AllowMissionNotCleared是否允许Ability在任务列表中配置不可移除。

配置方式

  1. HarmonyAppProvision文件中添加字段”app-privilege-capabilities“,按需配置通用权限能力。
  2. 使用签名工具对HarmonyAppProvision文件重新签名,生成p7b文件。
  3. 使用p7b文件签名HAP。

示例

{
    "version-name": "1.0.0",
    ...
    "bundle-info": {
        "developer-id": "OpenHarmony",
        ...
    },
    "issuer": "pki_internal",
    "app-privilege-capabilities": ["AllowAppDataNotCleared", "AllowAppDesktopIconHide"] // 应用的数据不允许被删除且允许隐藏桌面图标
}

可由设备厂商配置的特权

简介

除了通用应用特权外,设备厂商还可以为各类设备额外定义允许配置的特权项,包括:

权限类型默认值描述
removablebooltrue是否允许应用被卸载,仅预置应用生效。
keepAliveboolfalse是否允许应用常驻。
singletonboolfalse是否允许应用安装到单用户下(U0)。
allowCommonEventstring[]-是否允许静态广播拉起。
associatedWakeUpboolfalse是否允许FA模型应用被关联唤醒。
runningResourcesApplyboolfalse是否允许应用运行资源申请(CPU、事件通知、蓝牙等)。
allowAppDataNotClearedboolfalse是否允许应用数据被删除。
allowAppMultiProcessboolfalse是否允许应用多实例。
allowAppDesktopIconHideboolfalse是否允许隐藏桌面图标。
allowAbilityPriorityQueriedboolfalse是否允许Ability配置查询优先级。
allowAbilityExcludeFromMissionsboolfalse是否允许Ability不在任务栈中显示。
allowAppUsePrivilegeExtensionboolfalse是否允许应用使用ServiceExtension、DataExtension。
allowFormVisibleNotifyboolfalse是否允许桌面卡片可见。
allowAppShareLibraryboolfalse是否允许为其它应用提供应用间HSP能力。
allowMissionNotClearedboolfalse是否允许Ability在任务列表中配置不可移除。

配置方式

按需在产品配置文件中配置。

示例

install_list_capability.json中配置
{
    "install_list": [
        {
            "bundleName": “com.example.kikakeyboard”,
            "singleton": true, // 应用安装到单用户下
            "keepAlive": true, // 应用常驻
            "runningResourcesApply": true, // 运行资源申请(CPU、事件通知、蓝牙等)
            "associatedWakeUp": true, // FA模型应用被关联唤醒
            "app_signature" : ["****"], // 当配置的证书指纹和hap的证书指纹一致才生效
            "allowCommonEvent": [“usual.event.SCREEN_ON”, “usual.event.THERMAL_LEVEL_CHANGED”],
            "allowAppDataNotCleared": true, // 不允许应用数据被删除
            "allowAppMultiProcess": true, //允许应用多实例
            "allowAppDesktopIconHide": true, //允许隐藏桌面图标
            "allowAbilityPriorityQueried": true, //允许Ability配置查询优先级
            "allowAbilityExcludeFromMissions": true, // 允许Ability不在任务栈中显示
            "allowAppUsePrivilegeExtension": true, // 允许应用使用ServiceExtension、DataExtension
            "allowFormVisibleNotify": true, // 允许桌面卡片可见
            "allowAppShareLibrary": true, // 允许应用提供应用间HSP能力
            "allowMissionNotCleared": true // 允许Ability在任务列表中配置不可移除
        },
}

证书指纹获取

  1. 证书存放在HarmonyAppProvision文件的distribution-certificate字段下,新建profile.cer文件,将证书的内容拷贝到profile.cer文件中。

    {
        ...
        "bundle-info": {
            "distribution-certificate": "-----BEGIN CERTIFICATE----\nMIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMk..." /证书的内容
            ...
        }
        ...
    }
    
  2. 将profile.cer内容换行和去掉换行符。

    -----BEGIN CERTIFICATE-----
    MIICMzCCAbegAwIBAgIEaOC/zDAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO
    MRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh
    bTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjEwMjAy
    MTIxOTMxWhcNNDkxMjMxMTIxOTMxWjBoMQswCQYDVQQGEwJDTjEUMBIGA1UEChML
    T3Blbkhhcm1vbnkxGTAXBgNVBAsTEE9wZW5IYXJtb255IFRlYW0xKDAmBgNVBAMT
    H09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJlbGVhc2UwWTATBgcqhkjOPQIBBggq
    hkjOPQMBBwNCAATbYOCQQpW5fdkYHN45v0X3AHax12jPBdEDosFRIZ1eXmxOYzSG
    JwMfsHhUU90E8lI0TXYZnNmgM1sovubeQqATo1IwUDAfBgNVHSMEGDAWgBTbhrci
    FtULoUu33SV7ufEFfaItRzAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFPtxruhl
    cRBQsJdwcZqLu9oNUVgaMAwGCCqGSM49BAMDBQADaAAwZQIxAJta0PQ2p4DIu/ps
    LMdLCDgQ5UH1l0B4PGhBlMgdi2zf8nk9spazEQI/0XNwpft8QAIwHSuA2WelVi/o
    zAlF08DnbJrOOtOnQq5wHOPlDYB4OtUzOYJk9scotrEnJxJzGsh/
    -----END CERTIFICATE-----
    
  3. 使用keytool工具,执行以下命令获取对应的证书指纹。

    说明:keytool工具可以在DevEco Studio安装后的\tools\openjdk\bin目录中获取。

    keytool -printcert -file profile.cer
    
    # 运行结果举例
    # result:
    # 所有者: CN=OpenHarmony Application Release, OU=OpenHarmony Team, O=OpenHarmony, C=CN
    # 发布者: CN=OpenHarmony Application CA, OU=OpenHarmony Team, O=OpenHarmony, C=CN
    # 序列号: 68e0bfcc
    # 生效时间: Tue Feb 02 20:19:31 CST 2021, 失效时间: Fri Dec 31 20:19:31 CST 2049
    # 证书指纹:
    #          SHA1: E3:E8:7C:65:B8:1D:02:52:24:6A:06:A4:3C:4A:02:39:19:92:D1:F5
    #          SHA256: 8E:93:86:3F:C3:2E:E2:38:06:0B:F6:9A:9B:37:E2:60:8F:FF:B2:1F:93:C8:62:DD:51:1C:BA:C9:F3:00:24:B5
    # // 证书指纹,去掉冒号,最终结果为8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC9F30024B5
    # ...
    
  4. 将运行结果中的SHA256证书指纹去掉冒号后填入install_list_capability.json中的app_signature字段。

    {
       "install_list": [
            {
                ...
                "app_signature": ["8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC9F30024B5"],
                ...
            }
        ]
    }
    
install_list.json中配置
{
     "install_list" : [
        {
            "app_dir" : "/system/app/com.ohos.launcher",
            "removable" : true // 应用是否可卸载
        }
     ]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值