Harmony学习之元服务开发
Harmony学习之元服务开发
一、元服务概述
元服务(Atomic Service)是HarmonyOS提供的一种轻量级应用程序形态,具备免安装、即用即走、账号相随等核心特征。与传统应用相比,元服务具有秒开直达、纯净清爽、服务相伴、一体两面等优势,能够大幅提升信息与服务的获取效率。
元服务与传统应用的区别
| 维度 | 元服务 | 传统应用 |
|---|---|---|
| 安装方式 | 免安装,系统后台自动部署 | 需用户主动下载安装 |
| 包体大小 | ≤10MB,单包≤2MB | 通常>50MB |
| 启动速度 | 秒开直达(<1秒) | 冷启动>3秒 |
| 开发语言 | ArkTS(元服务API集) | 系统API |
| 分发方式 | 服务找人模式(卡片、搜索等) | 应用商店分发 |
| 跨设备流转 | 天然支持分布式能力 | 需显式处理多端适配 |
二、开发环境准备
1. AGC平台创建元服务项目
在开始开发前,需要先在AppGallery Connect平台创建元服务项目:
- 登录AGC平台,进入"我的项目"
- 点击"新增项目",选择"元服务"类型
- 填写基本信息(应用名称、包名等)
- 获取唯一的APP ID(包名格式:com.atomicservice.[appid])
2. DevEco Studio创建项目
使用DevEco Studio创建元服务项目:
File → New → Create Project → Atomic Service → Empty Ability
配置项目信息时,需要填写在AGC平台注册的包名,确保与平台一致。项目创建完成后,目录结构如下:
项目名称/
├─ entry/ # 主模块
│ ├─ src/main/ets/ # ArkTS代码
│ │ ├─ entryability/ # 入口能力
│ │ ├─ pages/ # 页面
│ │ └─ widget/ # 卡片
└─ agconnect-services.json # AGC配置文件
三、元服务核心开发
1. 页面路由配置
在main_pages.json中配置页面路由:
{
"src": [
"pages/HomePage",
"pages/GamePage",
"pages/UserAgreement"
]
}
2. 页面开发示例
以下是一个简单的首页实现:
// HomePage.ets
@Entry
@Component
struct HomePage {
@State recentScores: ScoreItem[] = [];
aboutToAppear() {
this.loadScores();
}
loadScores() {
const scores = AppStorage.Get('scores') || [];
this.recentScores = scores.slice(0, 5);
}
build() {
Column() {
Text('舒尔特方格')
.fontSize(32)
.fontWeight(FontWeight.Bold)
.margin(20)
Button('开始游戏')
.width('80%')
.height(50)
.backgroundColor('#007DFF')
.fontColor('#FFFFFF')
.onClick(() => router.pushUrl({ url: 'pages/GamePage' }))
.margin(10)
// 近期分数展示
Column() {
Text('近期成绩')
.fontSize(18)
.margin(10)
List() {
ForEach(this.recentScores, (item) => {
ListItem() {
Row() {
Text(`${item.size}x${item.size}`)
.width(60)
Text(item.time)
.flexGrow(1)
Text(item.date)
.width(80)
}
.padding(10)
}
})
}
}
.backgroundColor('#FFFFFF')
.borderRadius(10)
.padding(5)
.margin(10)
.width('90%')
}
.width('100%')
.height('100%')
.backgroundColor('#F5F5F5')
}
}
interface ScoreItem {
size: number;
time: string;
date: string;
}
四、服务卡片开发
服务卡片是元服务的重要入口,可以直接在桌面显示关键信息,支持快速交互。
1. 卡片配置文件
在widget.json中配置卡片信息:
{
"forms": [
{
"name": "ShulteWidget",
"description": "舒尔特方格快捷卡片",
"src": "./ShulteWidget.ets",
"window": {
"designWidth": 720,
"autoDesignWidth": true
},
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true,
"scheduledUpdateTime": "00:00",
"updateDuration": 1
}
]
}
2. 卡片实现
// ShulteWidget.ets
@Entry
@Component
struct ShulteWidget {
private formProvider: FormProvider = new FormProvider();
build() {
Column() {
Text('舒尔特方格')
.fontSize(16)
.margin(5)
Button('快速开始')
.width('80%')
.height(30)
.fontSize(14)
.backgroundColor('#007DFF')
.onClick(() => {
// 打开元服务
this.formProvider.startAbility({
bundleName: 'com.example.shultetable',
abilityName: 'EntryAbility'
});
})
}
.padding(10)
}
}
五、元服务图标设计
元服务需要准备两类图标:
- 应用图标:1024×1024px,用于服务入口
- 卡片图标:根据卡片尺寸设计(如2×2卡片为128×128px)
图标需符合鸿蒙设计规范,建议使用圆角设计,放置在entry/src/main/resources/base/media目录下。
六、打包与发布
1. 打包配置
在build-profile.json5中配置发布签名:
{
"app": {
"signingConfigs": [
{
"name": "release",
"certificate": "release.p12",
"profile": "release.p7b"
}
]
}
}
2. 构建发布包
在DevEco Studio中构建发布包:
- 设置Build Mode为"release"
- 选择Build → Build Hap(s)/APP(s) → Build APP(s)
- 构建结果位于build目录下
3. 发布流程
- 在AGC平台创建发布
- 填写发布信息(应用描述、截图等)
- 提交审核
- 审核通过后正式发布
七、开发注意事项
1. 权限配置
在module.json5中申请必要的权限:
"requestPermissions": [
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC",
"reason": "用于跨设备数据同步",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
2. 包体大小限制
- 单包大小:≤2MB
- 总包大小:≤10MB(特殊情况可申请20MB)
- 服务卡片最多16张
3. 性能优化
- 按需加载资源
- 使用分布式数据管理进行跨设备同步
- 控制卡片刷新频率(建议≤30秒)
八、总结
元服务作为HarmonyOS生态的重要组成部分,为开发者提供了轻量化、免安装的服务形态。通过服务卡片、系统级入口等分发方式,元服务能够实现"服务找人"的智能触达,大幅提升用户体验和开发效率。
建议开发者在实际项目中,根据业务场景选择合适的服务形态(元服务或传统应用),充分利用HarmonyOS的分布式能力和原生智能特性,打造更优质的用户体验。

浙公网安备 33010602011771号