【HarmonyOS】鸿蒙企业应用详解

一、前言

1、应用类型定义速览:
HarmonyOS目前针对应用分为三种类型:普通应用,游戏应用,企业应用。

而企业应用又分为,企业普通应用和设备管理应用MDM(Mobile Device Management)

HarmonyOS NEXT版本中,普通应用用户只能通过应用市场下载并安装应用包。

企业类应用包括企业普通应用和MDM(Mobile Device Management)设备管理应用。仅在企业定制设备上运行,不会在普通消费者设备上运行。不会上架华为应用市场。

2、MDM应用实现详解:
设备管理应用通过EnterpriseAdminExtensionAbility来调用MDM Kit中的接口,实现管理设备的意图。
在这里插入图片描述
3、企业应用的前提
企业应用和普通应用最大的分别是,企业应用只能运行在特定的企业设备上,不能安装在面向普通消费者的商用设备上。

并且企业应用需要和华为AGC平台进行申请:


申请成为企业MDM应用开发者
申请将应用加入企业MDM应用受邀名单
可向华为运营人员申请开通。在收到您的申请后,华为运营人员将在1-3个工作日内为您安排对接人员。申请方法如下:申请邮箱地址:agconnect@huawei.com。
邮件标题:[申请企业MDM应用发布证书和发布Profile]-[应用名称]-[应用包名]-[APP ID]-[Developer ID],Developer ID等查询方法可参见查看应用基本信息。
邮件正文:请说明申请原因。

二、企业如何选择普通应用,还是企业应用?

上述问题,最关键的核心因素是,是否只需要满足,企业应用不对外,在应用市场不公开下载,但是企业内部可以安装的诉求。

如果只是该诉求,完全可以选择普通应用,但是不公开发布的策略。

非公开发布:
在这里插入图片描述

是指您可以将不适合公开分发的应用以非公开方式在华为应用市场上发布,使其仅可通过链接被用户发现。非公开发布的应用不会出现在任何华为应用市场的类别、推荐、排行榜、搜索结果或其他列表中。

企业应用
只有企业特殊需求,例如在自己的企业设备上,例如银行的平板,教育机构的平板或者手机,都可以选择企业应用。

设备管理应用
还有一种情况,当企业需要管理员工设备时,此时就需要MDM,将应用创建为设备管理应用。

三、企业MDM应用发布证书与Profile申请全流程指南

1、准备申请资质与材料

(1)企业开发者账号认证
注册华为开发者联盟账号(https://developer.huawei.com/consumer/cn/),并完成企业实名认证(需提供营业执照、法人信息等)。
认证通过后,在“管理中心”选择“HarmonyOS应用”,进入MDM应用开发专区。

(2)资质审核材料
企业MDM应用需说明使用场景(如企业设备管理、数据安全管控等),并提交《企业应用开发资质声明》(华为开发者平台可下载模板)。
若涉及敏感权限(如设备控制、数据监控),需额外提供企业内部安全策略文档。

2、生成证书请求文件(CSR)

(1)工具准备
使用OpenSSL工具生成密钥对与CSR文件,示例命令:

# 生成私钥(2048RSA)openssl genrsa -out enterprise_mdm.key 2048# 生成CSR文件(需填写企业信息,Common Name建议使用企业域名)openssl req -new -key enterprise_mdm.key -out enterprise_mdm.csr -subj "/C=CN/O=企业名称/CN=企业域名"

(2)上传CSR申请证书
在华为开发者平台“证书管理”页面,选择“创建企业MDM发布证书”,上传CSR文件并提交审核(审核周期通常为1-3个工作日)。

3、下载与配置证书

审核通过后,下载证书文件(.p12格式),并在DevEco Studio中配置:

  1. 打开Project Structure > Signing Configs,添加.p12证书路径及密码;
  2. build.gradle中指定签名配置,确保应用打包时使用该证书签名:
    signingConfigs {release {storeFile file('enterprise_mdm.p12')storePassword '证书密码'keyAlias '证书别名'keyPassword '密钥密码'}
    }
    
4、Profile文件核心参数说明

Profile文件(.p7b或.json格式)需包含以下关键信息(通过DevEco Studio自动生成或手动配置):

(1)应用基本信息
bundleName:
应用包名(需与证书绑定的包名一致)

versionCode/versionName:
应用版本号

distributionType:
设置为enterprise_mdm(标识MDM应用类型)

(2)MDM专属权限声明
在module.json5中声明MDM必需权限(参考仅MDM应用可用权限):

"requestPermissions": [{"name": "ohos.permission.MDM_CONTROL_DEVICE", // 设备控制权限"reason": "用于企业设备管理"},{"name": "ohos.permission.MDM_SET_SECURITY_POLICY", // 安全策略设置权限"reason": "用于下发企业安全策略"}// 其他MDM权限...
]

(3)设备管理能力声明
在Profile中添加设备管理扩展能力(需与激活命令中的类名一致):

"deviceManagement": {"adminExtention": "com.enterprise.mdm.DeviceAdminExtension", // 设备管理扩展类名"supportTypes": ["super_admin", "byod"] // 支持超级管理或BYOD模式
}
5、生成与签名Profile文件

(1)通过DevEco Studio生成

  1. 在项目中创建profile.json,按上述规范配置参数;
  2. 使用证书对Profile签名:通过以下hdc命令生成签名后的Profile文件(.p7b)。

hdc shell bm sign-profile -p profile.json -k enterprise_mdm.p12 -a 证书别名 -w 证书密码

(2)手动配置注意事项
Profile中的distributionType必须为enterprise_mdm,否则非企业设备无法安装(参考错误码9568398);
权限声明需与MDM Kit开发指南一致,避免因权限缺失导致功能失效。

6、设备激活为MDM管理设备

(1)超级设备管理模式(全管控)


hdc shell edm enable-admin -n com.enterprise.mdm -a com.enterprise.mdm.DeviceAdminExtension

(2)BYOD模式(自带设备办公)


hdc shell edm enable-admin -n com.enterprise.mdm -a com.enterprise.mdm.DeviceAdminExtension -t byod

注意:激活限制
同一设备仅能激活一个超级设备管理应用;
BYOD模式下,设备仍保留部分用户个人权限,需在Profile中配置byod支持。

2. 部署与测试验证

(1)安装MDM应用
使用已签名的HAP包和Profile文件,通过以下方式安装:

hdc shell bm install -p mdm_app.hap -f mdm_profile.p7b

(2)功能验证
检查MDM权限是否生效(如调用setSecurityPolicy接口下发密码策略);
测试设备管理功能(如远程锁定、应用黑名单管理,参考黑名单处理文档)。

注意

1、非企业设备安装失败(错误码9568398)
原因:
Profile中的distributionType为enterprise_mdm,但设备未经过企业认证。

解决方案:
仅在企业定制设备或通过MDM激活的设备上安装,或修改Profile类型为普通应用(非MDM场景)。

2、MDM权限调用失败
原因:
未正确激活设备管理应用或权限声明缺失。

解决方案:
确认已执行edm enable-admin激活,并在Profile和代码中完整声明权限(如ohos.permission.MDM_CONTROL_DEVICE)。

3、证书与Profile绑定错误
原因:
HAP包签名证书与Profile签名证书不一致。

解决方案:
使用同一证书对HAP包和Profile签名,通过jarsigner -verify命令校验签名一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87628.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87628.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87628.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux云计算基础篇(8)

VIM 高级特性插入模式按 i 进入插入模式。按 o 在当前行下方插入空行并进入插入模式。按 O 在当前行上方插入空行并进入插入模式。命令模式:set nu 显示行号。:set nonu 取消显示行号。:100 光标跳转到第 100 行。G 光标跳转到文件最后一行。gg 光标跳转到文件第一行。30G 跳转…

Linux进程单例模式运行

Linux进程单例模式运行 #include <iostream> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int write_pid(const cha…

【Web 后端】部署服务到服务器

文章目录 前言一、如何启动服务二、挂载和开机启动服务1. 配置systemctl 服务2. 创建server用户3. 启动服务 总结 前言 如果你的后端服务写好了如果部署到你的服务器呢&#xff0c;本次通过fastapi写的服务实例&#xff0c;示范如何部署到服务器&#xff0c;并做服务管理。 一…

国产MCU学习Day5——CW32F030C8T6:窗口看门狗功能全解析

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.窗口看门狗&#xff08;WWDG&#xff09;简介 二.窗口看门狗寄存器列表 三.窗口看门狗复位案例 一.窗口看门狗&#xff08;WWDG&#xff09;简介 CW32F030C8T6 内部集成窗口看…

2025年文件加密软件分享:守护数字世界的核心防线

在数字化时代&#xff0c;数据已成为个人与企业的宝贵资产&#xff0c;文件加密软件通过复杂的算法&#xff0c;确保信息在存储、传输与共享过程中的保密性、完整性与可用性。一、文件加密软件的核心原理文件加密软件算法以其高效性与安全性广泛应用&#xff0c;通过对文件数据…

node.js下载教程

1.项目环境文档 语雀 2.nvm安装教程与nvm常见命令,超详细!-阿里云开发者社区 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解决问题)在一个项目,跳转到外部html页面,页面布局

问题描述目前&#xff0c;ERP后台有很多跳转外部链接的地方&#xff0c;会直接打开一个tab显示。因为有些页面是适配手机屏幕显示&#xff0c;放在浏览器会超级大。不美观&#xff0c;因此提出优化。修改前&#xff1a;修改后&#xff1a;思考过程1、先看下代码&#xff1a;log…

网络通信协议与虚拟网络技术相关整理(上)

#作者&#xff1a;程宏斌 文章目录 tcp协议udp协议arp协议icmp协议dhcp协议BGP协议OSPF协议BGP vs OSPF 对比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip网桥/veth网…

物联网软件层面的核心技术体系

物联网软件层面的核心技术体系 物联网(IoT)软件技术栈是一个多层次的复杂体系&#xff0c;涵盖从设备端到云平台的完整解决方案。以下是物联网软件层面的关键技术分类及详细说明&#xff1a; 一、设备端软件技术 1. 嵌入式操作系统 实时操作系统(RTOS)&#xff1a; FreeRTO…

GreatSQL通过伪装从库回放Binlog文件

GreatSQL通过伪装从库回放Binlog文件 一、适用场景说明 1、主库误操作恢复 利用 Binlog 在其他实例解析、回放&#xff0c;根据gtid只回放到指定位点。 2、网络隔离环境同步 备份恢复后可以拉去主库Binlog文件至新实例同步增量数据。 3、备份恢复遇到Binlog文件过大处理 恢复实…

MVC 架构设计模式

在现代软件开发中&#xff0c;架构设计决定了一个项目的可维护性与可扩展性。MVC&#xff08;Model-View-Controller&#xff09;作为经典的分层设计模式&#xff0c;广泛应用于 Web 系统、前端应用乃至移动端开发中。本文不仅介绍 MVC 的核心思想和机制&#xff0c;还将结合具…

(18)python+playwright自动化测试鼠标拖拽-上

1.简介 本文主要介绍两个在测试过程中可能会用到的功能&#xff1a;在selenium中介绍了Actions类中的拖拽操作和Actions类中的划取字段操作。例如&#xff1a;需要在一堆log字符中随机划取一段文字&#xff0c;然后右键选择摘取功能。playwright同样可以实现元素的拖拽和释放的…

Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议

Android 网络全栈攻略系列文章&#xff1a; Android 网络全栈攻略&#xff08;一&#xff09;—— HTTP 协议基础 Android 网络全栈攻略&#xff08;二&#xff09;—— 编码、加密、哈希、序列化与字符集 Android 网络全栈攻略&#xff08;三&#xff09;—— 登录与授权 Andr…

Python爬虫实战:从零构建完整项目(数据采集+存储+异常处理)

Python爬虫实战&#xff1a;从零构建完整项目&#xff08;数据采集存储异常处理&#xff09; 爬虫不是简单的请求解析&#xff0c;而是一个系统工程。本文将带你体验企业级爬虫开发的核心流程。 一、前言&#xff1a;为什么需要完整的爬虫项目&#xff1f; 作为初学者&#xf…

大数据时代UI前端的用户体验设计新思维:以用户为中心的数据可视化

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;大数据重构用户体验设计的底层逻辑在数据爆炸式增长的今天&#xff0c;用…

FreeRTOS 中任务控制块(Task Control Block,TCB)用于管理和描述任务的核心数据结构

在 FreeRTOS 中&#xff0c;任务控制块&#xff08;Task Control Block&#xff0c;TCB&#xff09;是用于管理和描述任务的核心数据结构。每个任务都有一个对应的 TCB&#xff0c;它包含了任务的所有相关信息。 TCB 的主要功能 存储任务状态信息&#xff1a;TCB 中包含了任务…

前端-HTML-day1

目录 1、标签语法 2、HTML基本骨架 3、标签的关系 4、注释 5、标题标签 6、段落标签 7、换行和水平线标签 8、文本格式化标签 9、图像标签-基本使用 10、图像标签-属性 11、相对路径 12、绝对路径 13、超链接 14、音频 15、视频 16、综合案例1--个人简介 17、…

OpenCV篇——项目(二)OCR文档扫描

目录 文档扫描项目说明 前言 文档扫描代码总体演示 OCR文档识别代码总体演示: ​编辑 代码功能详解 1. 预处理阶段 2. 边缘检测 3. 轮廓处理 4. 透视变换 5. 后处理 主要改进说明&#xff1a; 使用建议&#xff1a; 文档扫描项目说明 前言 本项目实现了一个自动…

Java 中导出包含多个 Sheet 的 Excel 文件

在 Java 中导出包含多个 Sheet 的 Excel 文件&#xff0c;可以使用 Apache POI 或 EasyExcel&#xff08;阿里开源库&#xff09;。以下是两种方法的详细实现&#xff1a; 方法 1&#xff1a;使用 Apache POI&#xff08;支持 .xls 和 .xlsx&#xff09; 1. 添加 Maven 依赖 …

OneCode采用虚拟DOM结构实现服务端渲染的技术实践

一、技术背景与挑战 随着企业级应用复杂度的提升&#xff0c;传统服务端渲染(SSR)面临页面交互性不足的问题&#xff0c;而纯前端SPA架构则存在首屏加载慢和SEO不友好的缺陷。OneCode框架创新性地将虚拟DOM技术引入服务端渲染流程&#xff0c;构建了一套兼顾性能与开发效率的企…