【鸿蒙南向开发】OpenHarmony MDM应用开发流程

199 篇文章 7 订阅
198 篇文章 0 订阅

前言

最近有越来越多的开发者关注MDM(Mobile Device Management)相关的开发内容,MDM在iOS和Android端上大量应用在企业内部的设备管控。因此,下文会为大家介绍如何开发一个MDM管理应用。

开发环境

系统版本: OpenHarmony 5.0.0.27

DevEco Studio版本: OpenHarmony: DevEco Studio 4.1 Release(build: 4.1.0.400)

SDK版本: OpenHarmony: 4.1.7.7

开发流程

新建工程

打开IDE,依次点击File -> New -> Create Project -> Application -> [OpenHarmony]Empty Ability -> Next -> Finish,创建一个默认的OpenHarmony Api11应用工程。

新增MDM配置

  1. 在工程Module对应的ets目录下,右键选择“New > Directory”,新建一个目录并命名为EnterpriseExtAbility。

  2. 在EnterpriseExtAbility目录,右键选择“New > ArkTS File”,新建一个文件并命名为EnterpriseExtAbility.ets。

  3. 打开EnterpriseExtAbility.ets文件,导入EnterpriseAdminExtensionAbility模块,自定义类继承EnterpriseAdminExtensionAbility并加上需要的应用通知回调方法,如onAdminEnabled()、onAdminDisabled()等回调方法。当设备管理员应用被激活或者去激活时,则可以在对应回调方法中接受系统发送通知。 src/main/ets/EnterpriseExtAbility/EnterpriseExtAbility.ets


`import EnterpriseAdminExtensionAbility from '@ohos.enterprise.EnterpriseAdminExtensionAbility';

export default class EnterpriseAdminAbility extends EnterpriseAdminExtensionAbility {
 onAdminEnabled() {
 console.info("onAdminEnabled");
 }

 onAdminDisabled() {
 console.info("onAdminDisabled");
 }

 onBundleAdded(bundleName: string) {
 console.info("EnterpriseAdminAbility onBundleAdded bundleName:" + bundleName);
 }

 onBundleRemoved(bundleName: string) {
 console.info("EnterpriseAdminAbility onBundleRemoved bundleName" + bundleName);
 }
};
  1. 在工程Module对应的module.json5配置文件中注册ServiceExtensionAbility,type标签需要设置为“enterpriseAdmin”,srcEntry标签表示当前ExtensionAbility组件所对应的代码路径。

`"extensionAbilities": [
 {
 "name": "MDMExtensionAbility",
 "type": "enterpriseAdmin",
 "exported": true,
 "srcEntry": "./ets/EnterpriseExtAbility/EnterpriseExtAbility.ets"
 }
],` 
  1. 在工程Module对应的module.json5配置文件中添加MDM相关权限。
`"requestPermissions": [
 {
 "name": "ohos.permission.MANAGE_ENTERPRISE_DEVICE_ADMIN",
 },
 {
 "name": "ohos.permission.ENTERPRISE_SUBSCRIBE_MANAGED_EVENT"
 }
]` 

签名

修改SDK下的11\toolchains\lib\UnsgnedReleasedProfileTemplate.json文件

`···
"app-distribution-type":"enterprise_mdm",
···`

依次点击 File -> Project Structure -> Project -> Signing Configs -> Automatically generate signature -> Apply -> OK,在build-profile.json5里确认签名完成。

编译构建预置

  1. 通过以下指令

`hdc file recv /system/etc/app/install_list.json D:\install_list.json` 

导出install_list.json配置文件。

  1. install_list.json新增MDM应用配置:

`{
 "app_dir" : "/system/app/com.winslei.mdmmanager",
 "removable" : true
}` 
  1. 通过以下指令

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

install_list.json替换到设备里。

  1. 依次点击 Build -> Build Hap(s)/APP(s) -> Build Haps(s),待编译完成后可看到构建好的包entry\build\default\outputs\default\entry-default-signed.hap

  2. 通过以下指令


`hdc shell "mount -o remount,rw /"
hdc shell "rm -rf /data/*"
hdc file send entry-default-signed.hap /system/app/com.winslei.mdmmanager/MDM.hap
hdc shell "reboot"` 

将构建好的hap替换到设备里并重启,可看到桌面上已正常安装MDM应用。

FAQ

安装时报错install failed due to grant request permissions failed

Question:

`Install Failed: error: failed to install bundle.
code:9568289
error: install failed due to grant request permissions failed.` </pre>

**Answer:** 使用了[gitee.com/openharmony…](https://link.juejin.cn?target=https%3A%2F%2Fgitee.com%2Fopenharmony%2Fdocs%2Fblob%2Fmaster%2Fzh-cn%2Fapplication-dev%2Fsecurity%2FAccessToken%2Fpermissions-for-mdm-apps.md "https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-mdm-apps.md")里的权限时必须按照[签名](#%E7%AD%BE%E5%90%8D "#%E7%AD%BE%E5%90%8D")的操作进行p7b的重签,应用安装时会检测签名里的应用类型是否为**enterprise_mdm**。

安装时报错install permission denied

Question:

`Install Failed: error: failed to install bundle.
code:9568266
error: install permission denied.` 

error hilog:

`E C01120/BundleMgrService: [bundle_permission_mgr.cpp(VerifyCallingPermissionForAll:295)]permission ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE denied, callerToken : 805820136

E C01120/BundleMgrService: [bundle_install_checker.cpp(VaildEnterpriseInstallPermission:315)]enterprise normal/mdm bundle can not be installed by shell` </pre>

**Answer:** MDM应用无法通过hdc安装,hdc没有安装MDM应用的所需要的权限,如`ohos.permission.INSTALL_ENTERPRISE_MDM_BUNDLE`、`ohos.permission.INSTALL_SELF_BUNDLE`等,只能通过[编译构建预置](#%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E9%A2%84%E7%BD%AE "#%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E9%A2%84%E7%BD%AE")来由系统安装。

写在最后

●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
●点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
●更多鸿蒙最新技术知识点,请移步前往小编:https://gitee.com/

在这里插入图片描述

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值