赞
踩
华为开发者联盟将调动华为全球化平台和产业链资源,从应用推广、开发支持、应用变现、品牌宣传等方面为联盟成员提供业务发展机会,助力联盟成员提升在移动互联网领域的合作创新能力,为华为智能手机消费者打造卓越用户体验,实现共赢。
注册这个开发者,一是为了自己app可以在商店上线;二是为了得到自己客户群体。
要想注册成为华为开发者的会员,可以按照以下步骤进行注册完成。
第一步:输入https://developer.huawei.com/cn/网址,显示如下:
点击 HUAWEI MOBILE SERVICES 第一个按钮,进入开发者联盟的官网。
第二步:注册开发者账号有两种方式:
第一种是:手机号注册
第二种是:邮件地址注册
手机注册成功了,需要实名认证一下。
需要提交银行卡的相关信息。
DevEco Studio支持Windows系统和macOS系统,在开发HarmonyOS应用前,您需要准备HarmonyOS应用的开发环境。环境准备流程如下所示:
HUAWEI DevEco Studio(获取工具请点击链接下载,以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。通过使用DevEco Studio,开发者可以更高效的开发具备HarmonyOS分布式能力的应用,进而提升创新效率。
作为一款开发工具,除了具有基本的代码开发、编译构建及调测等功能外,DevEco Studio还具有如下特点:
下载和安装DevEco Studio
DevEco Studio的编译构建依赖JDK,DevEco Studio预置了Open JDK,版本为1.8,安装过程中会自动安装JDK。
Windows环境下安装:
Mac环境下安装
DevEco Studio的编译构建依赖JDK,DevEco Studio预置了Open JDK,版本为1.8,安装过程中会自动安装JDK。
DevEco Studio提供SDK Manager统一管理SDK及工具链,下载各种编程语言的SDK包时,SDK Manager会自动下载该SDK包依赖的工具链。
1、运行已安装的DevEco Studio,首次使用,请选择Do not import settings,点击OK。
2、根据向导设置国家/区域,然后点击Start using DevEco Studio。
3、工具会自动检查本地路径下是否存在HarmonyOS SDK,如果不存在,会弹出如下向导,提示下载HarmonyOS SDK。
4、默认情况下,SDK会下载到user目录下,您也可以指定对应的存储路径(不支持中文字符),然后点击Next。
5、默认会下载最新版本的HarmonyOS Java语言SDK和Toolchains。在弹出的License Agreement窗口,点击Accept开始下载SDK。
说明如果本地已有SDK包,请选择本地已有SDK包的存储路径,DevEco Studio会增量更新SDK及工具链。
6、等待HarmonyOS SDK及工具下载完成,点击Finish,界面会进入到DevEco Studio欢迎页。
7、SDK默认会下载HarmonyOS Java语言SDK和Toolchains,点击上图欢迎页中的Configure(或图标) > Settings,进入HarmonyOS SDK页面。
8、如果工程还会用到JS、C/C++语言和预览器,请在“SDK Platforms”中,勾选对应的SDK包,在“SDK Tools”中勾选Previewer,然后点击Apply,SDK Manager会自动将SDK包和预览器工具链,下载到3中设置的SDK存储路径中。
DevEco Studio开发环境配置完成后,可以通过运行HelloWorld工程来验证环境设置是否正确。以Phone工程为例,在Phone的远程模拟器中运行该工程。
创建一个新工程
1、打开DevEco Studio,在欢迎页点击Create HarmonyOS Project,创建一个新工程。
2、选择设备类型和模板,以Phone为例,选择Empty Feature Ability(Java),点击Next。
3、配置工程的基本信息
1、在DevEco Studio菜单栏,点击Tools > HVD Manager。
2、在浏览器中弹出华为开发者联盟帐号登录界面,请输入已实名认证的华为开发者联盟帐号的用户名和密码进行登录(查看远程模拟器登录常见问题)。
说明
推荐使用Chrome浏览器,如果使用Safari、360等其他浏览器,要取消阻止跨站跟踪和阻止所有Cookie功能。
3、登录后,请点击界面的允许按钮进行授权
4、启动模拟器
5、运行结果如下
HarmonyOS的用户应用程序包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。
一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图1所示。
Ability
Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
库文件
库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录。
资源文件
应用的资源文件(字符串、图片、音频等)存放于resources目录下,便于开发者使用和维护
配置文件
配置文件 (config.json) 是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息
首先有一个entry目录,结合上篇的内容,我们知道一个应用是由一个或多个Hap包所组成的,Hap包又可以分为entry类型和feature类型,每个Hap包由:代码、资源、第三方库及应用配置文件组成。所以我们代码中的entry目录其实就一个应用的Hap包,它的类型的entry类型的Hap包。一个Hap包由代码、资源、第三方库及应用配置文件组成,接着我们来看这些资源,代码等都分布在entry包的哪里。
在src/main/java下以包名命名的文件夹内分布着Java代码。这里的代码可以用来创建布局,动态调整布局以及为交互提供支撑服务。
和java文件夹同级的resources目录下分布应用资源,该目录的base目录下,按资源用途又分为多个文件夹资源:
element:表示元素资源,该文件夹下主要存放json格式的文件,主要用来表示 字符串、颜色值、布尔值等,可以在其他地方被引用
graphic:表示可绘制资源。用xml文件来表示,比如我们项目中设置的 圆角按钮、按钮颜色等都是通过引用这里的资源来统一管理的
layout:表示布局资源,用xml文件来表示,比如页面的布局资源,都放在这里
media:表示媒体资源,包括图片、音频、视频等非文本格式的文件。
config.json项目配置文件:
每一个hap包下都包含了该hap包的配置信息,这个配置文件位于:entry/src/main/目录下,由工具帮我们生成,命名为config.json,harmonyOS应用配置采用json格式的形式。下面我们来看一下这个配置文件中的内容,并简要介绍一下配置的作用。该配置文件中,主要有三个模块,如下所示:
app:表示应用的全局配置信息。同一个应用的不同HAP包的“app”配置必须保持一致。
deviceConfig:表示应用在具体设备上的配置信息。
module:表示HAP包的配置信息。该标签下的配置只对当前HAP包生效。
bundleName:表示应用的包名,用于标识应用的唯一性。通常采用反转的域名
vendor:表示开发应用的厂商
version:code表示内部版本号,用于系统管理版本使用,对用户不可见,name表示应用的版本号,用于向用户呈现
apiVersion:包含三个选项。
compatible:表示应用运行需要的API最小版本。
target:表示应用运行需要的API目标版本。
releaseType:表示应用运行需要的API目标版本的类型,取值为“CanaryN”、“BetaN”或者“Release”,其中,N代表大于零的整数。
Canary:受限发布的版本。
Beta:公开发布的Beta版本。
Release:公开发布的正式版本。
第一个页面内有一个文本和一个按钮,使用DependentLayout布局,通过Text和Button组件来实现,其中vp和fp分别表示虚拟像素和字体像素。“ability_main.xml”的示例代码如下:
<?xml version="1.0" encoding="utf-8"?> <DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:height="match_parent" ohos:width="match_parent"> <Text ohos:id="$+id:text" ohos:width="match_content" ohos:height="match_content" ohos:text="Hello World" ohos:text_color="#000000" ohos:text_size="32fp" ohos:center_in_parent="true"/> <Button ohos:id="$+id:button" ohos:width="match_content" ohos:height="match_content" ohos:text="Next" ohos:text_size="19fp" ohos:text_color="#FFFFFF" ohos:top_padding="8vp" ohos:bottom_padding="8vp" ohos:right_padding="70vp" ohos:left_padding="70vp" ohos:center_in_parent="true" ohos:below="$id:text" ohos:background_element="$graphic:background_button" ohos:margin="10vp"/> </DependentLayout>
按钮的背景是蓝色胶囊样式,可以通过graphic目录下的XML文件来设置。
右键点击“graphic”文件夹,选择“New > File”,命名为“background_button.xml”,单击回车键。
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:shape="rectangle">
<corners
ohos:radius="100"/>
<solid
ohos:color="#007DFF"/>
</shape>
package com.sudojava.firstdemo.slice; import com.sudojava.firstdemo.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); Button button = (Button) findComponentById(ResourceTable.Id_button); // 点击按钮跳转至第二个页面 button.setClickedListener(listener -> present(new SecondAbilitySlice(), new Intent())); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); } }
package com.sudojava.firstdemo.slice; import com.sudojava.firstdemo.MainAbility; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; import ohos.agp.colors.RgbColor; import ohos.agp.components.DependentLayout; import ohos.agp.components.Text; import ohos.agp.components.element.ShapeElement; import ohos.agp.utils.Color; public class SecondAbilitySlice extends AbilitySlice { @Override protected void onStart(Intent intent) { super.onStart(intent); //声明布局 DependentLayout layout = new DependentLayout(this); //设置布局的宽度和高度 layout.setWidth(DependentLayout.LayoutConfig.MATCH_PARENT); layout.setHeight(DependentLayout.LayoutConfig.MATCH_CONTENT); ShapeElement shapeElement = new ShapeElement(); shapeElement.setRgbColor(new RgbColor(255,255,255)); layout.setBackground(shapeElement); Text text = new Text(this); text.setText("Hi Here"); text.setWidth(DependentLayout.LayoutConfig.MATCH_PARENT); text.setTextSize(100); text.setTextColor(Color.BLACK); // 设置文本的布局 DependentLayout.LayoutConfig textConfig = new DependentLayout.LayoutConfig(DependentLayout.LayoutConfig.MATCH_CONTENT, DependentLayout.LayoutConfig.MATCH_CONTENT); textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT); text.setLayoutConfig(textConfig); layout.addComponent(text); super.setUIContent(layout); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。