OpenHarmony应用开发技巧 - 应用常驻和自启动配置

概述

文档环境

开发环境:Windows 11

DevEco Studio 版本:DevEco Studio 3.1 Release(3.1.0.500)

SDK 版本:3.2.14.1(Full SDK)

应用模型:Stage

开发板型号:DAYU 200

系统版本:OpenHarmony 3.2.2 Release

功能简介

  • OpenHarmony支持包含ServiceExtensionAbility类型模块的应用配置常驻和自启动。
  • 常驻和自启动配置是设备厂商根据设备的产品形态为特殊应用定义的特权项。

RK3568的应用特权配置文件源码位于:

vendor/hihope/rk3568/preinstall-config/install_list_capability.json

在系统中位于:

/etc/app/install_list_capability.json

  • 本文档将介绍如何修改系统配置项使自己开发的应用可以获得常驻和自启动的能力。临时配置用于测试配置项是否生效,当生效后可将配置信息拷贝到系统源码中,使配置永久生效。
  • 本文档创建的ServiceExtensionAbility仅用作演示应用常驻和自启动配置,不可用于正式项目,ServiceExtensionAbility的开发请参考​​ServiceExtensionAbility介绍​​。

应用常驻和自启动配置

创建包含ServiceExtensionAbility类型的应用

1. 创建新工程ServiceDemo(com.openharmony.servicedemo)

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第1张图片

2. 修改工程类型为OpenHarmony工程。

修改entry/build-profile.json5文件,targets.runtimeOS为OpenHarmony,并Sync工程。

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第2张图片

3. 配置自动签名。单击File > Project Structure > Project > SigningConfigs 界面勾选Automatically generate signature ,等待自动签名完成即可,单击OK。

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第3张图片

4. 在工程Module(entry)对应的ets目录下,右键选择New > Directory,新建一个目录并命名为ServiceExtAbility

5. 在ServiceExtAbility目录,右键选择 New > TypeScript File ,新建一个TypeScript文件并命名为ServiceExtAbility.ts

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第4张图片

6. 在ServiceExtAbility.ts文件中,导入ServiceExtensionAbility的依赖包,自定义类继承ServiceExtensionAbility并实现生命周期回调。

import ServiceExtensionAbility from '@ohos.app.ability.ServiceExtensionAbility';

const TAG: string = "[ServiceDemo]";

export default class ServiceExtAbility extends ServiceExtensionAbility {
  onCreate(want) {
    console.info(TAG, `onCreate, want: ${want.abilityName}`);
  }

  onRequest(want, startId) {
    console.info(TAG, `onRequest, want: ${want.abilityName}`);
  }

  onConnect(want) {
    console.info(TAG, `onConnect, want: ${want.abilityName}`);
    return null;
  }

  onDisconnect(want) {
    console.info(TAG, `onDisconnect, want: ${want.abilityName}`);
  }

  onDestroy() {
    console.info(TAG, `onDestroy`);
  }
}

7. 在工程Module(entry)对应的module.json5配置文件中注册ServiceExtensionAbility,type标签需要设置为“service”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。修改module.mainElementServiceExtAbility,mainElemen标识当前Module的入口UIAbility名称或者ExtensionAbility名称,常驻和自启动需配置此项为ServiceExtensionAbility对应的名称。

{
  "module": {
    "mainElement": "ServiceExtAbility",
    "extensionAbilities": [
      {
        "name": "ServiceExtAbility",
        "icon": "$media:icon",
        "description": "service",
        "type": "service",
        "exported": true,
        "srcEntry": "./ets/ServiceExtAbility/ServiceExtAbility.ts"
      }
    ]
  }
}

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第5张图片

证书指纹获取

指纹获取有多种方式,此处选用一种较为方便的方式,其他方式可参考​​OpenHarmony应用开发技巧 - 如何获取证书指纹​​。​

1. 在工程中创建新ModuleFile > New > Module > Empty Ability。一直点击Next 直到创建成功

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第6张图片

2. 执行Run > Run 'application'(application为新创建Module的名称),新创建的Module 的HAP包被安装到系统中。

3. 执行以下命令打印出HAP的finger 信息,然后删除新创建的Module ,恢复工程。

hdc shell "bm dump -n com.openharmony.servicedemo | grep finger"

480EB53D7568D38BFA686D0550744B499FA798C196705367F01D50F64812F8B8

应用特权配置

1. 提取当前系统中的特权配置文件install_list_capability.json ,文件位于/etc/app/ 

hdc file recv /etc/app/install_list_capability.json D:\

2. 在文档最下面添加应用的信息,以本文档示例工程为例。其中:

bundleName:应用包名。

app_signature:上一章节获取的证书指纹。

allowAppUsePrivilegeExtension:是否允许应用使用ServiceExtension、DataExtension。

singleton:是否允许应用安装到单用户下(U0),常驻和自启动需配置。

keepAlive:是否允许应用常驻,常驻和自启动需配置。

OpenHarmony应用开发技巧 - 应用常驻和自启动配置_第7张图片

3. 将特权配置文件install_list_capability.json 推送回系统中,覆盖系统配置。

hdc shell "mount -o remount,rw /"
hdc file send D:\install_list_capability.json /etc/app/install_list_capability.json

4. 重启系统特权配置文件生效。

hdc shell reboot

安装常驻和自启动应用

由于常驻和自启动应用只有单用户应用才可以配置,所以需要特殊的安装方式进行安装。

1. 检查设备中是否有已安装过的应用,并检查安装userId。

 hdc shell "bm dump -n com.openharmony.servicedemo | grep userId"

2. 如果userId显示为0则是单用户,显示为大于100的数字,则为其他用户安装,需要卸载。

hdc shell "bm uninstall -n com.openharmony.servicedemo"

3. 把Build完成的hap包推入系统中。

hdc file send  D:\Code\DevEcoStudioProjects\ServiceDemo\entry\build\default\outputs\default\entry-default-signed.hap /data/ServiceDemo.hap

4. 使用bm命令安装应用。

hdc shell "bm install -p /data/ServiceDemo.hap -u 0"

5. 重启系统,验证功能。

hdc shell reboot

6. 设备重启后,通过ps -ef 指令过滤包名,查看应用是否已经启动。

 hdc shell "ps -ef | grep com.openharmony.servicedemo"

参考文档

​​OpenHarmony Docs - ServiceExtensionAbility​​

​​OpenHarmony Docs - 应用特权配置指南​

你可能感兴趣的:(OpenHarmony,harmonyos,华为)