鸿蒙应用开发入门(二)开发环境搭建

开发
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

[[360069]]

 想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

2.1 工具下载和安装:

下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio

安装下一步.....就可以,没有坑!

2.2 下载HarmonyOS SDK

DevEco Studio提供SDK Manager统一管理SDK和这个包依赖的工具链。通过SDK Manager能自动下载各个语言对应的SDK包。SDK Manager提供多种编程语言的SDK包,各SDK包的说明请参考:

1. Native:C/C++语言SDK包,默认不自动下载,需手动勾选下载。

2. JS:JS语言SDK包,默认不自动下载,需手动勾选下载。

3. Java:Java语言SDK包,首次下载SDK时默认下载。

SDK对应的工具链(SDK Tools)和预览器:

1. Toolchains:SDK工具链,HarmonyOS应用开发必备工具集,包括编译、打包、签名、数据库管理等工具的集合,首次下载SDK时默认下载。

2. Previewer:Lite Wearable预览器,在开发过程中可以动态预览Lite Wearable应用的界面呈现效果,默认不自动下载,需手动勾选下载。

2.3 安装IDE时候的坑1:一直加载gradle

1. 下载指定的gadle版本

可以到 官网下载或者借助网友提供的下载好的版本,直接下载使用。

2. 关闭DevEco studio,打开DevEco studio自动生成的一个目录

默认在这个目录:C:\Users\Administrator\.gradle\wrapper\dists\gradle-6.3-all\b4awcolw...这串字符不同电脑不一样...u1obfh9i8

3. 下载好的zip文件放进去

将下载好的gradle文件复制在以上文件夹内(注意一定要放置在类似“b4awcolw...这串字符不同电脑不一样...u1obfh9i8”目录下),重启软件即可。

2.4 安装IDE时候的坑2:模拟器刷不出来

开发应用的时候需要模拟器跑效果,需要在DevEco Studio菜单栏,点击Tools > HVD Manager开发模拟器,第一次打开,会自动下载相关文件。然后要求用华为开发者账号登录认证,开发者账号要求实名认证,没有自行注册认证就好。

注意:浏览器一定要更新到最新版本,否则可能模拟器刷不出来。

2.5 推荐一个很好用的开源手机投屏工具scrcpy

1. 获取地址:https://github.com/Genymobile/scrcpy

2. scrcpy简介

简单地来说,scrcpy就是通过adb调试的方式来将手机屏幕投到电脑上,并可以通过电脑控制手机设备。它可以通过USB连接,也可以通过Wifi连接(类似于隔空投屏),而且不需要任何root权限,不需要在手机里安装任何程序。scrcpy同时适用于Linux,Windows和macOS。

3. 安装和使用

1)绿色的下载到Windows某个目录,然后将目录添加到Path环境变量就可以了。

2)使用USB进行连接设备

(1)手机通过USB连接到PC上,首次连接会弹出是否信任该电脑,点击始终信任即可。

(2)运行adb devices查看是否连接成功

(3)运行“scrcpy -s 设备名称” ,只有一台设备直接scrcpy即可。

2.6 真机调试环境搭建步骤:

1)在IDE中生成签名文件,以备用

2)进入应用开发页面,进入管理中心,进入上架及推广服务

3)进入用户与访问,生成证书和管理设备(目前是受邀开发者可见),并且下载好证书已备用,添加设备需要UDID(获取UDID的命令,adb shell dumpsys DdmpDeviceMonitorService)

4)在进入我的项目,添加项目,添加应用,注意应用的包名必须和你自己的包名一样

5)在我的项目,对应的项目里,生成profile文件,下载以备用

6)cer、p12、p7b三个文件齐了,在项目的属性,签名设置上设置上,就可以在真机上调试运行了


3.1 第一个鸿蒙应用实现需求

编写两张页面,实现在第一张页面点击按钮跳转到第二张页面。在Java UI框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这两种方式创建出的布局没有本质差别,都是我们需要熟悉方式,所以我们将通过XML的方式布局第一张页面,然后再通过代码的方式布局第二张页面。

3.2 用XML布局第一张页面

1. 打开layout下面的“ability_main.xml”文件

2. 在“ability_main.xml”文件中创建一个文本和一个按钮

  1. xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  2.  
  3. ohos:width="match_parent" 
  4.  
  5. ohos:height="match_parent" 
  6.  
  7. ohos:background_element="#000000"
  8.  
  9.  
  10. ohos:id="$+id:text" 
  11.  
  12. ohos:width="match_content" 
  13.  
  14. ohos:height="match_content" 
  15.  
  16. ohos:text="Hello World" 
  17.  
  18. ohos:text_color="white" 
  19.  
  20. ohos:text_size="32fp" 
  21.  
  22. ohos:center_in_parent="true"/> 
  23.  
  24.  
  25. ohos:id="$+id:button" 
  26.  
  27. ohos:width="match_content" 
  28.  
  29. ohos:height="match_content" 
  30.  
  31. ohos:text="Next" 
  32.  
  33. ohos:text_size="19fp" 
  34.  
  35. ohos:text_color="white" 
  36.  
  37. ohos:top_padding="8vp" 
  38.  
  39. ohos:bottom_padding="8vp" 
  40.  
  41. ohos:right_padding="80vp" 
  42.  
  43. ohos:left_padding="80vp" 
  44.  
  45. ohos:background_element="$graphic:background_button" 
  46.  
  47. ohos:below="$id:text" 
  48.  
  49. ohos:horizontal_center="true" 
  50.  
  51. /> 

 3. 创建按钮的背景

按钮的背景是通过“background_button”来指定的。右键点击“graphic”文件夹,选择“New > File”,命名为“background_button.xml”。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <shape  xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="oval"
  3.     <solid ohos:color="#007DFF"/> 
  4.     <corners ohos:radius="20"/> 
  5. </shape> 

3.3 用编程的方式布局第二张页面

1. 创建Feature Ability

2. 代码编写界面

  1. public class SecondAbilitySlice extends AbilitySlice { 
  2.     @Override 
  3.     public void onStart(Intent intent) { 
  4.         super.onStart(intent); 
  5.         // 声明布局 
  6.         DependentLayout myLayout = new DependentLayout(this); 
  7.         // 设置页面布局大小和背景色 
  8.         myLayout.setWidth(MATCH_PARENT); 
  9.         myLayout.setHeight(MATCH_PARENT); 
  10.         ShapeElement element = new ShapeElement(); 
  11.         element.setRgbColor(new RgbColor(255, 255, 255)); 
  12.         myLayout.setBackground(element); 
  13.         // 创建一个文本 
  14.         Text text = new Text(this); 
  15.         text.setText("Nice to meet you."); 
  16.         text.setTextSize(55); 
  17.         text.setTextColor(Color.BLACK); 
  18.         // 设置文本的布局 
  19.         DependentLayout.LayoutConfig textConfig =  
  20.                                     new DependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT); 
  21.         textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT); 
  22.         
  23.         text.setLayoutConfig(textConfig); 
  24.         myLayout.addComponent(text); 
  25.         super.setUIContent(myLayout); 
  26.     } 
  27.   
  28.     @Override 
  29.     public void onActive() { 
  30.         super.onActive(); 
  31.     } 
  32.   
  33.     @Override 
  34.     public void onForeground(Intent intent) { 
  35.         super.onForeground(intent); 
  36.     } 

 3.4 实现页面跳转

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.     @Override 
  3.     public void onStart(Intent intent) { 
  4.         super.onStart(intent); 
  5.         super.setUIContent(ResourceTable.Layout_ability_main); 
  6.         Button button = (Button) findComponentById(ResourceTable.Id_button); 
  7.   
  8.         if (button != null) { 
  9.             // 为按钮设置点击回调 
  10.             button.setClickedListener(new Component.ClickedListener() { 
  11.                 @Override 
  12.                 public void onClick(Component component) { 
  13.                     Intent secondIntent = new Intent(); 
  14.                     // 指定待启动FA的bundleName和abilityName 
  15.                     Operation operation = new Intent.OperationBuilder() 
  16.                             .withDeviceId(""
  17.                             .withBundleName("com.example.myapplication"
  18.                             .withAbilityName("com.example.myapplication.SecondAbility"
  19.                             .build(); 
  20.                     secondIntent.setOperation(operation); 
  21.                     startAbility(secondIntent); // 通过AbilitySlice的startAbility接口实现启动另一个页面 
  22.                 } 
  23.             }); 
  24.         } 
  25.     } 
  26.   
  27.     @Override 
  28.     public void onActive() { 
  29.         super.onActive(); 
  30.     } 
  31.   
  32.     @Override 
  33.     public void onForeground(Intent intent) { 
  34.         super.onForeground(intent); 
  35.     } 

 文章配套视频课程《鸿蒙手机应用开发入门》https://edu.51cto.com/course/26133.html 

©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com/#zz

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2024-03-26 15:19:36

鸿蒙应用开发开发工具

2011-06-03 15:36:22

IOS 环境搭建

2011-06-03 14:36:32

IOS 环境搭建

2011-06-03 16:05:20

IOS 环境搭建

2011-06-03 15:08:09

IOS 环境搭建

2020-10-12 11:33:00

鸿蒙

2011-05-24 16:09:57

Androi

2013-07-23 06:11:44

Android开发学习Android开发环境Java

2020-11-09 11:56:49

HarmonyOS

2020-12-04 09:52:22

鸿蒙OS

2021-12-20 21:01:52

鸿蒙HarmonyOS应用

2019-12-10 09:20:30

NettyBIO开发

2011-07-08 16:02:24

iphone

2009-07-03 16:56:37

JSP开发环境

2010-04-03 11:30:15

Widget开发

2017-09-11 14:35:34

编辑器开发环境React

2011-05-26 10:33:26

Android开发

2011-08-02 17:37:01

IPhone开发 环境搭建

2017-03-02 15:33:24

Android Thi环境搭建

2020-09-28 15:13:04

鸿蒙
点赞
收藏

51CTO技术栈公众号