第3章_开发第一个HarmonyOS应用 第3章 开发第一个 HarmonyOS 应用HarmonyOS 学习系统 | 阶段一入门筑基期建议学习时长1-2 周学习目标序号能力1掌握 DevEco Studio 工程创建的完整流程2理解 Empty Ability 模板的代码结构3学会使用模拟器、真机、预览器三种方式运行应用4了解应用签名的基本流程核心图解内容讲解3.1 创建工程你打开外卖 AppDevEco Studio选好你想要的菜系设备类型手机/平板告诉店家你要什么规格Project Name、Package Name下单后厨房自动给你做好了自动生成工程代码。你不需要自己切菜炒菜点一下运行就能直接吃上模拟器运行。当然这顿饭是白米饭Empty Ability——什么菜都没有。接下来你需要在里面加菜写代码才能变成一顿丰盛的大餐。3.1.1 选择模板在 DevEco Studio 中单击Create HarmonyOS Project选择设备类型和模板。本阶段推荐选择Empty Ability(Java)模板该模板支持手机、平板、车机、智慧屏、智能穿戴设备等多种终端设备。3.1.2 配置项目信息配置项说明注意事项Project Name工程名称可以自定义Project Type工程类型选 Application独立应用Package Name包名必须全局唯一只能含字母、数字、下划线和点号Save Location存储路径不能包含中文字符Compatible API Version兼容的最低 SDK 版本根据目标设备选择Device Type设备类型至少选择 Phone3.1.3 自动生成的核心代码点击 Finish 后DevEco Studio 会自动生成示例代码和资源模板。以下是最核心的两个类// MainAbility.java - 应用入口设置默认路由publicclassMainAbilityextendsAbility{OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setMainRoute(MainAbilitySlice.class.getName());}}// MainAbilitySlice.java - 默认展示的页面publicclassMainAbilitySliceextendsAbilitySlice{OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);}}MainAbility是应用的入口 Ability通过setMainRoute()方法指定默认展示的MainAbilitySlice。MainAbilitySlice则通过setUIContent()加载布局文件ability_main.xml。3.2 运行工程运行方式对比方式优点缺点适用场景远程模拟器无需硬件开箱即用需要网络性能一般日常开发调试本地真机性能真实体验流畅需要物理设备 USB最终测试验证远程真机云端真机无需购买需要网络需排队无真机时使用预览器启动极快实时刷新不支持完整功能调试UI 布局调试模拟器运行步骤单击工具栏运行按钮或 Shift F10弹出 “Select a device first” 提示通过Tools → Device Manager打开设备管理器使用华为开发者账号登录并授权选择 Phone 模拟器如 HUAWEI P40并启动再次运行工程应用将安装到模拟器上3.3 真机运行与签名本地真机连接Phone/Tablet 设备在设备中打开开发者模式设置 → 关于手机 → 连续点击版本号直至提示您正处于开发者模式使用 USB 连接设备和 PCUSB 连接方式选择传输文件打开设置 → 系统和更新 → 开发人员选项开启USB 调试TV 设备TV 和 PC 连接到同一网络获取 TV 的 IP 地址确保 5555 端口开放在 DevEco Studio 中Tools → IP Connect输入 IP 连接应用签名在真机或远程真机上运行应用需要进行签名进入File → Project Structure → Project → Signing Configs点击 Sign In登录 AppGallery Connect创建项目和应用返回签名配置界面自动获取签名信息点击 OK// 签名完成后在 build.gradle 中可看到签名配置// signingConfigs {// debug {// storeFile file(xxx.keystore)// storePassword xxx// keyAlias xxx// keyPassword xxx// }// }3.4 使用预览器预览器相比模拟器启动更快适合快速调试 UI 布局。打开方式菜单栏View → Tool Windows → Previewer编辑窗口右上角的侧边工具栏点击 Previewer 图标使用前确保HarmonyOS SDK → SDK Tools 中已下载 Previewer 资源。预览器支持 Java 预览器和 JS 预览器还可以同时预览多种设备上的效果非常适合多设备适配调试。3.5 工程文件结构详解创建工程后DevEco Studio 自动生成了完整的目录结构。理解这些文件的作用是后续开发的基础核心源码文件文件作用是否可修改MainAbility.java应用入口 Ability配置默认路由可以MainAbilitySlice.java默认展示的页面可以ability_main.xml主页面布局文件可以config.json应用配置文件核心可以build.gradle构建配置可以ResourceTable.java资源 ID 常量自动生成不建议自动生成的布局文件默认的ability_main.xml内容如下?xml version1.0 encodingutf-8?DirectionalLayoutxmlns:ohoshttp://schemas.huawei.com/res/ohosohos:heightmatch_parentohos:widthmatch_parentohos:orientationverticalohos:padding16vpTextohos:id$id:text_helloworldohos:heightmatch_contentohos:widthmatch_contentohos:layout_alignmenthorizontal_centerohos:textHello Worldohos:text_size40fpohos:top_margin100vp//DirectionalLayout注意几个关键点命名空间是http://schemas.huawei.com/res/ohos不是 Android 的android命名空间ID 定义语法是$id:xxx加号表示自动注册 ID 到 ResourceTable尺寸单位是vp虚拟像素和fp字体像素match_parent和match_content类似于 Android 的match_parent和wrap_contentconfig.json 中的关键配置新创建的工程中config.json 的 module 对象已自动配置了 Ability 信息{module:{package:com.example.myapp,name:entry,deviceType:[phone],distro:{deliveryWithInstall:true,moduleName:entry,moduleType:entry},abilities:[{skills:[{entities:[entity.system.home],actions:[action.system.home]}],name:MainAbility,icon:$media:icon,description:$string:mainability_description,label:$string:entry_MainAbility,type:page,launchType:standard}]}}其中skills数组定义了应用的启动条件entity.system.homeaction.system.home表示这是一个桌面应用会在桌面上显示图标。代码速查卡API/操作功能示例setMainRoute()设置默认路由super.setMainRoute(MainAbilitySlice.class.getName())setUIContent()加载布局super.setUIContent(ResourceTable.Layout_ability_main)addActionRoute()添加附加路由addActionRoute(action.pay, PayAbilitySlice.class.getName())Shift F10运行应用需先启动设备View → Previewer打开预览器实时预览 UI与 Android/iOS 对比特性HarmonyOSAndroidiOS应用包格式HAP (.hap)APK (.apk)IPA (.ipa)入口配置config.json abilities[]AndroidManifest.xml activityInfo.plist布局文件格式XML (ohos 命名空间)XML (android 命名空间)Storyboard / XIB签名方式AppGallery Connectkeystore 文件Apple 证书模拟器类型远程模拟器本地 AVD 模拟器Xcode 模拟器⚠️ 踩坑回忆录第一次创建项目时我选了 “Empty Feature Ability(Java)” 模板结果发现在 Device Type 里只勾了 Phone后来想加个 Tablet 支持却不知道怎么改。后来才知道可以在 config.json 的module.deviceType里手动添加。还有一次我把包名从com.example.helloworld改成了中文拼音com.我的应用.demo结果编译直接失败——包名只能包含字母、数字、下划线和点号这是硬性要求。还有一个容易忽略的坑远程模拟器需要华为账号登录授权后才能使用而且需要网络连接。如果你在公司内网环境下可能需要先配置好代理才能正常启动模拟器。必做实操任务序号任务难度1使用 Empty Ability(Java) 模板创建 Hello World 应用★☆☆2修改布局文件中的文本内容在预览器中查看效果★☆☆3在远程模拟器中运行应用★★☆4修改 Project Name 和 Device Type观察 config.json 的变化★★☆5尝试完成真机签名配置如有真机★★★学习检查清单能独立创建 Empty Ability(Java) 工程能说出 MainAbility 和 MainAbilitySlice 的关系能在模拟器/预览器中运行应用了解真机运行和签名的完整流程知道 Package Name 的命名规则和限制能区分远程模拟器、本地真机、远程真机、预览器四种运行方式进阶方向尝试使用不同的 Ability 模板创建工程在 config.json 中修改应用图标和名称了解 Gradle 构建脚本的基本结构

本月热点