从零开始开发HarmonyOS应用并上架

开发环境搭建(1-2天)

  1. 硬件准备

操作系统:Windows 10 64位 或 macOS 10.13+

内存:8GB以上(推荐16GB)

硬盘:至少10GB可用空间

  1. 软件安装

下载 DevEco Studio 3.1+(官网:https://developer.harmonyos.com/cn/develop/deveco-studio)

  1. 安装时勾选:
    HarmonyOS SDK
    Node.js(自动集成)
    Ohpm(HarmonyOS包管理器)

  2. 环境验证

# 检查Node.js版本
node -v  # 需≥14.19.1

检查ohpm版本

ohpm -v # 需≥1.0.0
配置镜像源(加速依赖下载)

修改ohpm/ohpmrc文件:

复制
registry=https://repo.harmonyos.com/ohpm/
二、项目创建与开发(7-30天)
新建项目

选择模板:Empty Ability + JS/ArkTS(推荐ArkTS)

最小API版本:建议≥API 7(对应HarmonyOS 3.0)

核心目录结构

复制
├── entry # 主模块
│ ├── src/main
│ │ ├── ets # ArkTS代码
│ │ ├── resources # 资源文件
│ │ └── config.json # 应用配置
关键开发要点

UI开发:使用ArkUI声明式语法

typescript
复制
@Entry
@Component
struct Index {
@State message: string = ‘Hello HarmonyOS’

build() {
Column() {
Text(this.message)
.fontSize(30)
Button(‘Click Me’)
.onClick(() => {
this.message = ‘Button Clicked!’
})
}
.width(‘100%’)
.height(‘100%’)
}
}
功能开发:

使用@ohos开头的系统API(如网络、传感器)

通过import router from '@ohos.router’实现页面跳转

调试技巧

使用HiLog输出日志:

typescript
复制
import hilog from ‘@ohos.hilog’;
hilog.info(0x0000, ‘testTag’, ‘Test Log Message’);
真机调试:开启开发者模式(设置→关于手机→连续点击版本号7次)

三、应用测试(3-7天)
测试类型

单元测试:使用@ohos/hypium框架

UI测试:XTS自动化测试框架

兼容性测试:至少覆盖3款不同分辨率设备

云测试服务

使用华为提供的云真机测试服务

重点测试项目:

冷启动时间≤1.5秒

内存峰值≤系统限制的80%

无ANR(应用无响应)情况

四、应用签名(0.5天)
生成密钥

在DevEco Studio:Build → Generate Key

必填信息:

Alias:至少8字符,包含大小写字母

Validity:≥应用市场要求的25年(建议填30年)

申请证书

登录AppGallery Connect

进入「我的项目」→「应用签名」→上传生成的CSR文件

签名配置

json
复制
// build-profile.json5
{
“app”: {
“signingConfigs”: [{
“name”: “release”,
“material”: {
“certpath”: “cert/example.p12”,
“storePassword”: “",
“keyAlias”: “exampleKey”,
“keyPassword”: "
”,
“signAlg”: “SHA256withECDSA”
}
}]
}
}
五、上架华为应用市场(3-7天)
材料准备

应用截图:5张(1242x2208px PNG)

隐私政策URL:必须独立页面

测试账号(如有登录功能)

版权证明(如涉及第三方内容)

提交流程

登录华为开发者联盟

进入「应用市场」→「我的应用」→「创建应用」

填写信息:

分类选择精确到三级目录

年龄分级需符合实际内容

上传签名的HAP包(通过Build → Build HAP生成)

审核要点

隐私合规:必须遵循《华为应用市场审核指南》4.7条款

权限最小化:禁止请求非必要权限

无后台自启动(需在config.json声明)

六、常见问题解决方案
签名失败

现象:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

解决:清理旧包 adb uninstall com.example.app

审核被拒高频原因

隐私政策未明确数据收集类型

应用描述含"beta"、"测试版"等字样

图标含华为Logo等侵权元素

性能优化建议

使用组件替代大量

滚动

复杂计算使用Worker线程

图片资源使用.webp格式

进阶建议
持续集成

配置DevEco CLI自动化构建:

bash
复制
npm install -g @ohos/hpm-cli
hpm build
关注更新

定期查看HarmonyOS版本动态

社区资源

官方论坛:https://developer.huawei.com/consumer/cn/forum/block/harmonyos

代码样例:https://gitee.com/harmonyos/codelabs

按照以上流程,通常可在1-2个月内完成从开发到上架的全流程。建议首次提交时预留至少5个工作日用于审核修改。

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

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

相关文章

Linux | 无头 Linux 服务器安装和设置

注:本文为 “Headless Linux” 相关文章合辑。 机翻未校。 How to Install and Set Up Headless Linux Server 如何安装和设置无头 Linux 服务器 Winnie Ondara Last Updated: January 31, 2023 A vast majority of Linux users are familiar with a Linux desk…

AI赋能数据库管理“最后一公里”,融合架构重塑数据库承载成本效能——zCloud 6.7与zData X 3.3正式发布

点击蓝字 关注我们 在数据驱动的新时代,数据库的多元化和智能化已成不可逆的趋势。3月31日,云和恩墨以“奇点时刻数智跃迁”为主题举办线上发布会,云和恩墨创始人兼总经理盖国强、公司数据库和生态产品群总经理熊军共同带来 zCloud 6.7与 zD…

I have something to say about Vue Node.js

关于Vue Node.js,我真的说了很多次了,让我难以理解为啥这么粗糙的东西能流行一起。真疯狂的世界。 vue让感觉就像玩猫德一样的,如此的疯狂,天哪。睡觉了 Node.js v13 window7_nodejsv13-CSDN博客

【橘子大模型】使用streamlit来构建自己的聊天机器人(下)

一、简介 我们之前完成了一个简易的聊天机器人,但是还留下了一些问题没有解决,比如如何开启新的会话。如何切换session_id,如何把对话做成流式的输出。这些我们就会在今天来完成。 二、关于新的会话和session_id from dotenv import load_…

php-cgi参数注入攻击经历浅谈

起因: 阿里云服务器再次警告出现挖矿程序。上一次服务器被攻击后,怕有恶意程序残留,第一时间重装了系统,也没有详查攻击入口。不过事后还是做了一些防范,这台留作公网访问的服务器上并未保留业务数据,只作…

自动驾驶中的实时挑战:如何优化车辆动力学模型

自动驾驶中的实时优化:自行车模型与双轨模型的计算复杂度权衡 在自动驾驶领域,车辆动力学建模是实现精准控制和路径规划的关键。自行车模型和双轨模型作为两种主流的建模方法,在实时性需求下如何平衡计算复杂度与精确度,是工程师们必须面对的挑战。本文将深入探讨这两种模…

Hybrid 架构的概念,以及如何优化Hybrid 通信方案,提升页面加载速度和渲染性能

1. 什么是 Hybrid 架构? Hybrid(混合)架构是指 结合 Web 技术和 Native(原生)技术 的移动应用开发模式,通常由以下部分组成: Web 部分:使用 HTML、CSS、JavaScript(或前…

关于类模板STL中vector容器的运用和智能指针的实现

代码题&#xff1a;使用vector实现一个简单的本地注册登录系统 注册&#xff1a;将账号密码存入vector里面&#xff0c;注意防重复判断 登录&#xff1a;判断登录的账号密码是否正确 #include <iostream> #include <cstring> #include <cstdlib> #in…

OpenCV 从入门到精通(day_04)

1. 绘制图像轮廓 1.1 什么是轮廓 轮廓是一系列相连的点组成的曲线&#xff0c;代表了物体的基本外形。相对于边缘&#xff0c;轮廓是连续的&#xff0c;边缘不一定连续&#xff0c;如下图所示。其实边缘主要是作为图像的特征使用&#xff0c;比如可以用边缘特征可以区分脸和手…

Python错误分析与调试

在Python编程的过程中&#xff0c;我们难免会遇到各种各样的错误&#xff0c;而有效地分析和调试这些错误&#xff0c;能让我们的代码快速恢复正常运行&#xff0c;今天就来和大家聊聊Python中错误分析与调试的相关内容。 错误分析 Python中的错误大致可以分为语法错误和逻…

Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战

Browser-use&#xff1a;基于 Python 的智能浏览器自动化 AI 工具调研与实战 一、概述 Browser-use 是一个旨在将 AI “智能体”&#xff08;Agents&#xff09;与真实浏览器进行交互的 Python 库&#xff0c;可以轻松实现浏览器自动化。在配合 LLM&#xff08;如 GPT 系列&a…

网络空间安全(51)邮件函数漏洞

前言 邮件函数漏洞&#xff0c;特别是在PHP环境中使用mail()函数时&#xff0c;是一个重要的安全问题。 一、概述 在PHP中&#xff0c;mail()函数是一个用于发送电子邮件的内置函数。其函数原型为&#xff1a; bool mail ( string $to , string $subject , string $message [, …

LLaMA-Factory 数据集成从入门到精通

一、框架概述 LLaMA-Factory 框架通过Alpaca/Sharegpt双格式体系实现多任务适配&#xff0c;其中Alpaca专注结构化指令微调&#xff08;含SFT/DPO/预训练&#xff09;&#xff0c;Sharegpt支持多角色对话及多模态数据集成。核心配置依托 dataset_info.json 实现数据源映射、格…

如何根据设计稿进行移动端适配:全面详解

如何根据设计稿进行移动端适配&#xff1a;全面详解 文章目录 如何根据设计稿进行移动端适配&#xff1a;全面详解1. **理解设计稿**1.1 设计稿的尺寸1.2 设计稿的单位 2. **移动端适配的核心技术**2.1 使用 viewport 元标签2.1.1 代码示例2.1.2 参数说明 2.2 使用相对单位2.2.…

07-Spring Boot 自动配置原理全解析

Spring Boot 自动配置原理全解析&#xff08;EnableAutoConfiguration 源码追踪&#xff09; Spring Boot 之所以能大幅简化配置&#xff0c;核心就在于它的 自动配置机制&#xff0c;而这一机制背后主要依赖于 EnableAutoConfiguration 注解。本文将从使用、源码、常见问题及…

前端如何检测项目中新版本的发布?

前言 你是否也曾遇到过这种情况&#xff0c;每次发完版之后都还会有用户反馈问题没有被修复&#xff0c;一顿排查之后发现他用的还是旧的版本。 用户&#xff1a;在 XX 页面 XX 字段还是不展示 我&#xff1a;刷新下页面 用户&#xff1a;刷新了啊 我&#xff1a;强刷一下&…

Vue 项目使用 pdf.js 及 Elasticpdf 教程

摘要&#xff1a;本文章介绍如何在 Vue 中使用 pdf.js 及基于 pdf.js 的批注开发包 Elasticpdf。简单 5 步可完成集成部署&#xff0c;包括数据的云端同步&#xff0c;示例代码完善且简单&#xff0c;文末有集成代码分享。 1. 工具库介绍与 Demo 1.1 代码包结构 ElasticPDF基…

聊聊Spring AI的ChromaVectorStore

序 本文主要研究一下Spring AI的ChromaVectorStore 示例 pom.xml <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-chroma</artifactId></dependency>配置 spring:ai:vectorstore:…

整数编码 - 华为OD统一考试(A卷、Java)

题目描述 实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。 编码规则如下: 编码时7位一组,每个字节的低7位用于存储待编码数字的补码。字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字节。采用小端序编…

Linux 递归查找并删除目录下的文件

在 Linux 中&#xff0c;可以使用 find 命令递归查找并删除目录下的文件 1、示例命令 find /path/to/directory -type f -name "filename_pattern" -exec rm -f {} 2、参数说明 /path/to/directory&#xff1a;要查找的目标目录type f&#xff1a;表示查找文件&am…