uniapp开发鸿蒙:打包发布与上架实战
完整的发布流程开发阶段:完成功能开发、测试、优化打包阶段:配置签名、执行打包、生成应用包测试阶段:安装测试、功能验证、性能测试上架阶段:准备材料、提交审核、等待审核发布阶段:审核通过、发布应用、监控数据维护阶段:收集反馈、修复问题、迭代更新。
·
uniapp开发鸿蒙:打包发布与上架实战
引入:应用发布的关键环节
经过前期的开发、优化和调试,我们的应用已经具备了上线的条件。本章将系统讲解uniapp鸿蒙应用的打包、签名、发布全流程,帮助您顺利完成应用上架。
一、应用打包配置
1.1 manifest.json配置
基础配置:
{
"name": "MyApp",
"appid": "__UNI__ABCDEFG",
"description": "我的应用描述",
"versionName": "1.0.0",
"versionCode": "100",
"transformPx": false,
"app-plus": {
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
"splashscreen": {
"autoclose": true,
"waiting": true
},
"modules": {},
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
]
},
"ios": {},
"sdkConfigs": {}
}
},
"harmony": {
"appId": "com.example.myapp",
"appName": "MyApp",
"versionName": "1.0.0",
"versionCode": 100,
"minPlatformVersion": 9,
"compileSdkVersion": 9,
"targetSdkVersion": 9,
"requestPermissions": [
{
"name": "ohos.permission.CAMERA"
},
{
"name": "ohos.permission.READ_MEDIA"
},
{
"name": "ohos.permission.WRITE_MEDIA"
},
{
"name": "ohos.permission.INTERNET"
}
]
},
"quickapp": {},
"mp-weixin": {
"appid": "wx1234567890",
"setting": {
"urlCheck": false
},
"usingComponents": true
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true
},
"mp-lark": {
"usingComponents": true
},
"mp-qq": {
"usingComponents": true
},
"mp-kuaishou": {
"usingComponents": true
},
"mp-jd": {
"usingComponents": true
},
"mp-xhs": {
"usingComponents": true
},
"vueVersion": "3"
}
1.2 环境配置
环境变量配置:
// config/env.js
const config = {
// 开发环境
development: {
baseURL: 'https://dev-api.example.com',
appId: 'dev_app_id'
},
// 测试环境
test: {
baseURL: 'https://test-api.example.com',
appId: 'test_app_id'
},
// 生产环境
production: {
baseURL: 'https://api.example.com',
appId: 'prod_app_id'
}
}
export default config[process.env.NODE_ENV || 'development']
package.json脚本配置:
{
"scripts": {
"dev": "cross-env NODE_ENV=development UNI_PLATFORM=h5 npm run dev:h5",
"dev:h5": "uni -p h5",
"dev:app": "uni -p app",
"dev:mp-weixin": "uni -p mp-weixin",
"dev:harmony": "uni -p harmony",
"build": "cross-env NODE_ENV=production UNI_PLATFORM=h5 npm run build:h5",
"build:h5": "uni build -p h5",
"build:app": "uni build -p app",
"build:mp-weixin": "uni build -p mp-weixin",
"build:harmony": "uni build -p harmony",
"build:all": "npm run build:h5 && npm run build:app && npm run build:mp-weixin && npm run build:harmony"
}
}
二、鸿蒙应用打包
2.1 生成签名证书
使用DevEco Studio生成证书:
- 打开DevEco Studio
- 选择File → Project Structure → Signing Configs
- 点击"+"创建新证书
- 填写证书信息: Key Alias:证书别名 Key Password:密钥密码 Certificate:证书文件 Store Password:存储密码
使用命令行生成证书:
# 生成密钥库
keytool -genkeypair -alias "myapp" -keyalg RSA -keysize 2048 -validity 36500 -keystore myapp.keystore
# 查看证书信息
keytool -list -v -keystore myapp.keystore
2.2 配置签名信息
在manifest.json中配置签名:
{
"app-plus": {
"distribute": {
"harmony": {
"signingConfigs": {
"release": {
"storeFile": "myapp.keystore",
"storePassword": "your_password",
"keyAlias": "myapp",
"keyPassword": "your_password"
}
}
}
}
}
}
环境变量方式配置(推荐):
# 创建.env文件
HARMONY_STORE_FILE=myapp.keystore
HARMONY_STORE_PASSWORD=your_password
HARMONY_KEY_ALIAS=myapp
HARMONY_KEY_PASSWORD=your_password
2.3 执行打包命令
HBuilderX可视化打包:
- 点击菜单:发行 → 原生App-云打包
- 选择鸿蒙平台
- 选择证书配置
- 点击打包
命令行打包:
# 开发环境打包
npm run build:harmony
# 生产环境打包
cross-env NODE_ENV=production npm run build:harmony
云打包:
# 使用HBuilderX云打包
uni build --platform harmony --cloud
# 指定包名和版本
uni build --platform harmony --appid com.example.myapp --version 1.0.0
2.4 打包产物说明
打包完成后,在unpackage/dist/build/harmony目录下生成:
app.hap:应用安装包app-debug.hap:调试包app-release.hap:发布包app-release.zip:发布压缩包(包含签名信息)
三、应用签名与加固
3.1 应用签名
手动签名:
# 使用hdc工具签名
hdc app install --sign --key myapp.keystore --alias myapp app-release.hap
# 查看签名信息
hdc app info --sign app-release.hap
自动签名配置:
{
"scripts": {
"sign": "hdc app install --sign --key $HARMONY_STORE_FILE --alias $HARMONY_KEY_ALIAS app-release.hap",
"build:sign": "npm run build:harmony && npm run sign"
}
}
3.2 应用加固
使用华为应用市场加固服务:
- 登录华为开发者联盟
- 进入"应用服务" → “应用安全”
- 上传应用包进行加固
- 下载加固后的应用包
加固配置选项:
- 防反编译:保护代码逻辑
- 防调试:防止动态调试
- 防篡改:检测应用完整性
- 防二次打包:防止重签名
3.3 签名验证
验证签名信息:
# 查看签名证书信息
hdc app info --sign app-release.hap
# 验证签名有效性
hdc app verify app-release.hap
四、鸿蒙应用上架
4.1 准备上架材料
基本信息:
- 应用名称(中英文)
- 应用图标(512×512像素)
- 应用截图(至少3张)
- 应用描述(中英文)
- 应用分类
- 隐私政策链接
- 服务协议链接
版本信息:
- 版本号(1.0.0)
- 版本描述(更新内容)
- 应用包(.hap文件)
- 最低系统版本要求
其他材料:
- 测试账号(如有需要)
- 演示视频(可选)
- 版权证明(如有)
4.2 创建应用
登录华为开发者联盟:
- 访问 https://developer.huawei.com
- 使用华为账号登录
- 进入"管理中心"
创建应用:
- 点击"创建应用"
- 选择"HarmonyOS应用"
- 填写应用基本信息
- 上传应用图标和截图
- 选择应用分类
- 填写应用描述
4.3 提交审核
上传应用包:
- 进入应用详情页
- 点击"版本管理"
- 点击"上传新版本"
- 上传.hap文件
- 填写版本信息
配置发布信息:
- 选择发布方式(全量发布/灰度发布)
- 设置发布时间(立即发布/定时发布)
- 选择发布渠道(应用市场/自有渠道)
- 设置更新类型(强制更新/可选更新)
提交审核:
- 确认所有信息无误
- 点击"提交审核"
- 等待审核结果(通常1-3个工作日)
4.4 审核注意事项
常见审核不通过原因:
- 应用名称与图标不符合规范
- 应用功能与描述不符
- 存在安全漏洞
- 隐私政策不完善
- 应用存在崩溃或严重bug
- 包含违规内容
审核加速建议:
- 提供详细的测试账号
- 录制功能演示视频
- 提前进行自测和兼容性测试
- 确保隐私政策完整且可访问
五、版本更新管理
5.1 热更新机制
配置热更新:
{
"app-plus": {
"distribute": {
"autoupdate": true,
"update": {
"ios": {
"url": "https://your-cdn.com/update/ios.json"
},
"android": {
"url": "https://your-cdn.com/update/android.json"
},
"harmony": {
"url": "https://your-cdn.com/update/harmony.json"
}
}
}
}
}
更新配置文件:
{
"version": "1.0.1",
"name": "1.0.1版本更新",
"description": "修复已知问题,优化用户体验",
"download_url": "https://your-cdn.com/update/app.wgt",
"force_update": false,
"min_uni_version": "3.0.0"
}
5.2 版本回滚
回滚配置:
// 检查更新
uni.getUpdateManager().onCheckForUpdate((res) => {
if (res.hasUpdate) {
// 有新版本
console.log('发现新版本:', res.version)
}
})
// 更新失败处理
uni.getUpdateManager().onUpdateFailed(() => {
// 更新失败,可以回滚到上一版本
console.log('更新失败')
})
5.3 灰度发布
配置灰度发布:
{
"app-plus": {
"distribute": {
"harmony": {
"gray": {
"percentage": 10,
"userIds": ["user1", "user2"]
}
}
}
}
}
六、应用监控与分析
6.1 应用性能监控
集成华为分析服务:
// 安装SDK
npm install @huawei/hms-analytics
// 初始化
import { HMSAnalytics } from '@huawei/hms-analytics'
HMSAnalytics.init({
appId: 'your_app_id',
enableLog: true
})
// 上报事件
HMSAnalytics.onEvent('purchase', {
product_id: '123',
price: 99.9
})
// 上报错误
HMSAnalytics.onError('network_error', {
url: 'https://api.example.com',
status: 404
})
6.2 用户行为分析
自定义事件埋点:
// utils/track.js
export const track = {
// 页面访问
pageView(pageName) {
HMSAnalytics.onEvent('page_view', { page_name: pageName })
},
// 按钮点击
buttonClick(buttonName) {
HMSAnalytics.onEvent('button_click', { button_name: buttonName })
},
// 购买事件
purchase(productId, price) {
HMSAnalytics.onEvent('purchase', {
product_id: productId,
price: price
})
}
}
6.3 崩溃监控
集成崩溃监控:
// 监听全局错误
uni.onError((error) => {
console.error('应用错误:', error)
// 上报错误
HMSAnalytics.onError('app_error', {
message: error.message,
stack: error.stack
})
})
// 监听Promise错误
window.addEventListener('unhandledrejection', (event) => {
console.error('Promise错误:', event.reason)
HMSAnalytics.onError('promise_error', {
reason: event.reason
})
})
七、多平台发布策略
7.1 平台差异化配置
条件编译配置:
// #ifdef HARMONYOS
// 鸿蒙平台特有配置
const config = {
baseURL: 'https://harmony-api.example.com'
}
// #endif
// #ifdef APP-PLUS
// App平台配置
const config = {
baseURL: 'https://app-api.example.com'
}
// #endif
// #ifdef H5
// H5平台配置
const config = {
baseURL: 'https://h5-api.example.com'
}
// #endif
平台特定代码:
export const getPlatformConfig = () => {
// #ifdef HARMONYOS
return {
platform: 'harmony',
version: '1.0.0'
}
// #endif
// #ifdef APP-PLUS
return {
platform: 'app',
version: '1.0.0'
}
// #endif
// #ifdef H5
return {
platform: 'h5',
version: '1.0.0'
}
// #endif
}
7.2 统一发布流程
自动化发布脚本:
{
"scripts": {
"release:harmony": "npm run build:harmony && npm run sign && node scripts/upload-harmony.js",
"release:app": "npm run build:app && node scripts/upload-app.js",
"release:h5": "npm run build:h5 && node scripts/upload-h5.js",
"release:all": "npm run release:harmony && npm run release:app && npm run release:h5"
}
}
上传脚本示例:
// scripts/upload-harmony.js
const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')
const appPath = path.join(__dirname, '../unpackage/dist/build/harmony/app-release.hap')
if (fs.existsSync(appPath)) {
console.log('开始上传鸿蒙应用包...')
// 执行上传命令
execSync('hdc app install app-release.hap')
console.log('上传成功')
} else {
console.error('应用包不存在,请先执行打包')
process.exit(1)
}
八、总结与最佳实践
8.1 发布流程总结
完整的发布流程:
- 开发阶段:完成功能开发、测试、优化
- 打包阶段:配置签名、执行打包、生成应用包
- 测试阶段:安装测试、功能验证、性能测试
- 上架阶段:准备材料、提交审核、等待审核
- 发布阶段:审核通过、发布应用、监控数据
- 维护阶段:收集反馈、修复问题、迭代更新
8.2 最佳实践建议
打包优化:
- 使用环境变量管理敏感信息
- 配置自动化打包脚本
- 定期清理无用资源
- 使用CDN加速资源加载
上架准备:
- 提前准备所有上架材料
- 进行充分的测试
- 准备详细的更新说明
- 设置合理的发布时间
版本管理:
- 遵循语义化版本规范
- 使用热更新机制
- 支持灰度发布
- 建立版本回滚机制
监控分析:
- 集成应用性能监控
- 收集用户行为数据
- 监控应用崩溃情况
- 定期分析应用数据
8.3 常见问题处理
打包失败:
- 检查证书配置是否正确
- 确认权限配置是否完整
- 查看打包日志定位问题
审核不通过:
- 仔细阅读审核反馈
- 修改不符合规范的内容
- 重新提交审核
应用崩溃:
- 查看崩溃日志
- 使用错误监控工具
- 及时修复问题并发布更新
通过本章的学习,您已经掌握了uniapp鸿蒙应用的打包、签名、上架全流程。在实际开发中,建议建立标准化的发布流程,确保每次发布都能顺利进行。
更多推荐



所有评论(0)