
目前华为应用市场只支持 Lite Wearable(轻量级智能穿戴)的 HarmonyOS 应用的上架,因此只支持轻量级智能穿戴设备的证书和 Profile 文件申请。智慧屏、智能穿戴等设备的证书、Profile 文件的申请,以及对应应用上架功能,敬请期待。 对于 Lite Wearable 的调试、发布证书和 Profile 的申请,请参考: 申请调试证书和 Profile 申请发布证书和 Profile 说明 在申请证书和 Profile 前,请根据生成密钥和证书请求文件准备好证书请求文件。

HarmonyOS 应用通过数字证书和授权文件来保证应用的完整性,在申请数字证书和 Profile 文件前,需要通过 DevEco Studio 来生成私钥(存放在 .p12 文件中)和证书请求文件(.csr 文件)。同时,也可以使用命令行工具的方式来生成密钥和证书请求文件,用于构筑工程流水线。 使用 DevEco Studio 生成证书请求文件 使用 DevEco Studio 生成证书请求文件的方式有以下两种情况: 如果还未生成密钥文件,则可以一键生成密钥和证书请求文件。 如果已有密钥文件,则可以使用已有密钥生成证书请求文件。 一键生成密钥和证书请求文件 在主菜单栏点击 Build > Generate Key。 在 Key Store Path 中,可以点击 Choose Existing 选择已有的密钥库文件;如果没有密钥库文件,点击 New 进行创建。下面以新创建密钥库文件为例进行说明。 在 Create Key Store 窗口中,填写密钥库信息后,点击 OK。 Key Store Path:选择密钥库文件存储路径。 Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为 8 位。请记住该密码,后续签名配置需要使用。 Confirm Password:再次输入密钥库密码。 在 Generate Key 界面中,继续填写密钥信息后,点击 Generate Key and CSR。 Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。 Password:输入密钥对应的密码,密钥密码需要与密钥库密码保持一致。请记住该密码,后续签名配置需要使用。 Confirm Password:再次输入密钥密码。 Validity:证书有效期,建议设置为 25 年及以上,覆盖应用的完整生命周期。 Certificate:输入证书基本信息,如组织、城市或地区、国家码等。 在弹出的窗口中,点击 CSR File Path 对应的图标,选择 CSR 文件存储路径。 点击 OK 按钮,创建 CSR 文件成功,工具会同时生成密钥文件(.p12)和证书请求文件(.csr)。 使用已有密钥生成证书请求文件 在主菜单栏点击 Build > Generate Certificate Request File。 在 Generate CSR 界面,填写证书请求文件生成参数,点击 OK。 key Store Path:点击 Choose Existing 选择已有的密钥库文件,后缀格式为 .p12。 Key Store Password:输入创建密钥时填写的密钥库密码。 Key Alias:输入创建密钥时填写的别名信息。 Key Password:输入创建密钥时填写的密钥密码。 Certificate Path:点击按钮,选择证书请求文件存储路径和名称。 打开证书请求文件存储目录,获取证书请求文件(.csr文件)。 使用命令行工具生成证书请求文件 使用 Open JDK 携带的 Keytool 工具生成证书请求文件。 使用管理员身份运行命令行工具。 切换到 keytool 工具所在路径,实际路径请根据安装目录进行修改。 执行如下命令,生成密钥文件。例如,生成的密钥名称为...

在进行 HarmonyOS 应用的编译构建前,需要对工程和编译构建的 Module 进行设置,请根据实际情况进行修改。 build.gradle:HarmonyOS 应用依赖 gradle 进行构建,需要通过 build.gradle 来对工程编译构建参数进行设置。build.gradle 分为工程级和模块级两种类型,其中工程根目录下的工程级 build.gradle 用于工程的全局设置,各模块下的 build.gradle 只对本模块生效。 config.json:应用清单文件,用于描述应用的全局配置信息、在具体设备上的配置信息和HAP的配置信息。 工程级 build.gradle apply plugin:在工程级 Gradle 中引入打包 app 的插件,不需要修改。 apply plugin: 'com.huawei.ohos.hap' ohos 闭包:工程配置,包括如下配置项: compileSdkVersion:依赖的 SDK 版本。 compileSdkVersion 3 //应用编译构建的目标 SDK 版本 defaultConfig { compatibleSdkVersion 3 //应用兼容的最低 SDK 版本 } signingConfigs:发布 APP 时的签名信息,在编译构建生成 APP中进行设置后自动生成。 buildscript 闭包:Gradle 脚本执行依赖,包括 Maven 仓地址和插件。 buildscript { repositories { maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://developer.huawei.com/repo/' } jcenter() } dependencies { classpath 'com.huawei.ohos:hap:2.0.0.6' } } allprojects 闭包:工程自身所需要的依赖,比如引用第三方库的Maven仓库和依赖包。 allprojects { repositories { maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://developer.huawei.com/repo/' } jcenter() } } 模块级 build.gradle apply plugin:在模块级 Gradle 中引入打包 hap 和 library 的插件,无需修改。 apply plugin: 'com.huawei.ohos.hap' //打包hap包的插件 apply plugin: 'com.huawei.ohos.library' //将HarmonyOS Library打包为har的插件 apply plugin: 'com.huawei.ohos.java-library' //将Java Library打包为jar的插件...

编译构建是将 HarmonyOS 应用的源代码、资源、第三方库等打包生成 HAP 或者 APP 的过程。其中,HAP 可以直接运行在真机设备或者模拟器中;APP 则是用于应用上架到华为应用市场。 HAP 和 APP 的关系说明请参考 HarmonyOS工程介绍。 为了确保 HarmonyOS 应用的完整性,HarmonyOS 通过数字证书和授权文件来对应用进行管控,只有签名过的 HAP 才允许安装到设备上进行运行(如果不带签名信息,仅可以运行在模拟器中);同时,上架到华为应用市场的 APP 也必须通过签名才允许上架。因此,为了保证应用能够发布和安装到设备上, 需要提前申请相应的证书与 Profile 文件,详情请参考申请证书和 Profile。 申请证书和 Profile 文件时,用于调试和上架的证书与授权文件不能交叉使用: 应用调试证书与应用调试 Profile 文件、应用发布证书与应用发布 Profile 文件具有匹配关系,必须成对使用,不可交叉使用。 应用调试证书与应用调试 Profile 文件必须应用于调试场景,用于发布场景将导致应用发布审核不通过;应用发布证书与应用发布 Profile 文件必须应用于发布场景,用于调试场景将导致应用无法安装。

DevEco Studio 针对 Java 语言代码进行安全检查,扫描代码安全问题,并根据扫描结果提示进行修改,有助于开发提高代码的健壮性。常见的代码安全问题包括如下几类: 凭据管理 认证问题和会话管理 权限控制 加密问题 信息泄露 完整性保护 隐私保护 不正确输入校验 安全编译 检查方法:鼠标选中已打开的代码编辑文件、或者鼠标点击选中文件或文件夹,或者按 Ctrl+ 鼠标点击选中多个文件,然后点击鼠标右键,选中 Code Check。 扫描完成后: 双击某个扫描结果可以跳转到对应代码,可以根据 Detail 的建议进行修改。 如果某个扫描结果不需要修改,可以对该扫描结果进行屏蔽,屏蔽后再执行 Code Check 将不再显示该扫描结果。 在扫描结果处,点击鼠标右键,选择 Block False Positives 可以屏蔽该行的安全检查。 如需恢复安全检查屏蔽的错误信息,可以在 .idea>shield_config.xml 中删除某条屏蔽信息,或者直接删除 .idea>shield_config.xml 文件来删除全部屏蔽信息。

SVG(Scalable Vector Graphics)可缩放矢量图形,是一种图像文件格式。目前由于 HarmonyOS 图形渲染引擎不支持 SVG 格式图片的渲染,开发者需要将 SVG 格式的图片文件转为为 XML 格式的文件,然后在布局文件中引用转换后的 XML 文件。这样,就可以在模拟器/预览器或者设备上运行应用时,正常的渲染该图像文件。转换方法如下: 选中应用模块,点击鼠标右键,选择 New>Svg To Xml。 选择需要转换的 svg 文件,并命名,点击 OK 按钮开始转换。 转换成功后,可以在 resources > base > graphic 文件下找到转换后的 xml 文件,并在布局文件中,引用该 xml 文件名即可完成对图标文件的引用。

DevEco Studio仅针对Lite Wearable提供预览器的功能。预览器支持代码热加载,在开发应用的同时,只要将开发的代码保存到源码中,即可在预览器中实时查看应用效果,方便开发者随时调整代码。 在使用预览器查看应用界面的UI效果前,需要确保 HarmonyOS SDK > SDK Tool**s** 中,已下载 Previewer 资源,详情请参考 下载HarmonyOS SDK。 打开预览器有两种方式,显示效果如下图所示。 通过菜单栏,点击 View>Tool Windows>Previewer,打开预览器。 在编辑窗口右上角的侧边工具栏,点击 Previewer,打开预览器。 预览器还提供 Lite Wearable 的场景化数据注入功能,如点亮/关闭屏幕,调节屏幕亮度,向应用注入步数、心率、经纬度等信息,可以在开发阶段模拟真实的使用场景,便于开发者验证应用使用体验。

HarmonyOS IDL 简介 HarmonyOS Interface Definition Language(简称 HarmonyOS IDL)是 HarmonyOS 的接口描述语言。HarmonyOS IDL 与其他接口语言类似,通过 HarmonyOS IDL 定义客户端与服务端均认可的编程接口,可以实现在二者间的跨进程通信(IPC,Inter-Process Communication)。跨进程通信意味着我们可以在一个进程访问另一个进程的数据,或调用另一个进程的方法。 通常我们把应用接口提供方(供调用)称为服务端,调用方称为客户端。客户端通过绑定服务端的 Ability 来与之进行交互,类似于绑定服务。关于 DevEco Studio 接口语言的详细描述请参考HarmonyOS IDL 接口使用规范。 说明 只能使用 Java 或 C++ 语言构建 .idl 文件,因此仅 Java、Java+JS、C/C++ 工程支持IDL。 创建 .idl 文件 在已经创建/打开的 HarmonyOS 工程中,选择 module 目录或其子目录,点击鼠标右键,选择 New>Idl File。 创建 IDL File。可以直接输入 IDL 接口名称,也可以通过包名格式定义 idl 接口名称。两种方式的差异仅在于 .idl 文件的文件目录结构。 按名称创建,创建 IDL File 时,输入接口名称,直接点击 OK。 DevEco Studio 在相应“module”的 src>main 路径下生成 idl 文件夹,并按照对应模块的包名生成同样的目录结构及 IDL 文件。 按包名创建,自定义 .idl 文件存储路径和接口名称。创建“IDL File”时,按照包名创建 IDL 文件。包名利用“.”作为分隔符,如输入“com.huawei.test.MyIdlInterface”。 DevEco Studio 在相应“module”的 src>main 路径下生成 idl 文件夹,并按照输入的包名生成相应目录结构及 IDL 文件。可以在此路径继续新增 IDL 文件。 点击工程右边栏的 Gradle,在Tasks > ohos 中选择 compileDebugIdl 或 compileReleaseIdl,对模块下的 IDL 文件进行编译。 编译完成后,在 build > generated > source > Idl> {Package Name} 目录下,生成对应的接口类、桩类和代理类,如下图所示。 实现 HarmonyOS IDL 接口 开发者可以使用 Java 或 C++ 编程语言构建 .idl 文件,关于 HarmonyOS IDL 接口的实现请参考IDL开发指南。

在支持 JS 语言的工程中,支持添加新的 JS Component 和 JS Page,在此之前,需要了解它们的基本概念。 JS Component:在 JS 工程中,可以存在多个JS Component(例如js目录下的 default 文件夹就是一个 JS Component),一个 JS FA 对应一个 JS Component,可以独立编译、运行和调试。 说明 轻量级智能穿戴对应的 JS 工程,只存在一个 JS FA,因此,轻量级智能穿戴的 JS 工程不允许创建新的 JS Component。 JS Page:Page 是表示 JS FA 的一个前台页面,由 JS、HML 和 CSS 文件组成,是 Component 的最基本单元,构成了 JS FA 的每一个界面。 添加 JS Component 在 JS 工程目录中,选中 js 文件夹,然后点击鼠标右键,选择 New > JS Component,输入 JS Component Name,点击 Finish 完成添加。 添加 JS Page 在 JS 工程目录中,选择需要添加 Page的Component 下的 pages 文件夹,然后点击鼠标右键,选择 New > JS Page,输入 JS Page Name,点击 Finish 完成添加。

Ability 是应用所具备的能力的抽象,一个 Module 可以包含一个或多个 Ability。Ability 分为两种类型:FA(Feature Ability)和 PA(Particle Ability),DevEco Studio 支持创建的 Ability 模板和应用场景如下表所示。 Ability类型 Ability模板 使用场景 Particle Ability Empty Data Ability Data Ability 有助于应用管理其自身和其他应用所存储数据的访问,并提供与其他应用共享数据的方法。Data 既可用于同设备不同应用的数据共享,也支持跨设备之间不同应用的数据共享。 Empty Service Ability Service Ability 可在后台长时间运行而不提供用户交互界面。Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行。 Feature Ability Empty Feature Ability(JS) 用 JS 和 Java 编写带 UI 界面的空模板。 Empty Feature Ability(Java) 用 Java 和 xml 编写带 UI 界面的空模板。 List Feature Ability(JS) 用 JS 和 Java 编写带 UI 界面的目录列表模板。 Tab Feature Ability(JS) 用 JS 和 Java 编写带 UI 界面的表单模板。 创建Particle Ability 选中对应的模块,点击鼠标右键,选择 New > Ability ,然后选择 Empty Data Ability 或者 Empty Service Ability。 根据选择的 Ability 模板,设置 Ability 的基本信息。 Empty Data Ability 基本信息设置: Data Name:Data Ability类名称。 Visible:表示该Ability是否可以被其它应用所调用,勾选上则表示允许被调用。 Package name:新增Ability对应的包名称。 Empty Service Ability 基本信息设置: Service Name:Service Ability 类名称。 Visible:表示该 Ability 是否可以被其它应用所调用,勾选上则表示允许被调用。 Package name:新增 Ability 对应的包名称。 Enable background mode :指定用于满足特定类型的后台服务, 可以将多个后台服务类型分配给特定服务。 各服务与 config.json 文件的映射关系如下表所示。 Background modes 对应config.json字段名称 描述 Data upload/download, backup/restore data-transfer 通过网络/对端设备进行数据下载,备份分享,传输等业务 Audio playback audio-playback 音频输出业务 Audio recording audio-recording 音频输入业务 Picture-in-picture picture-in-picture 画中画,小窗口播放视频业务 Voice/video call over IP voip 音视频电话、VOIP业务 Location update location 定位,导航业务 Bluetooth communication bluetooth-interaction 蓝牙扫描、连接、传输业务(穿戴) Wifi communication wifi-interaction WLAN扫描、连接、传输业务(多屏,克隆) Screen recording, screenshot screen-fetch 录屏,截屏业务 点击 Finish 完成 Ability 的创建,可以在工程目录对应的模块中查看和编辑 Ability。 创建...