鸿蒙学习ArkTS之项目开始前梳理

119 阅读2分钟

鸿蒙学习ArkTS之工程目录

通过几天的学习,熟悉了HarmonyOS 的项目介绍,以及基础的数据结构,方法调用和项目结构.从今天开始要逐步的进入代码环节.

不了解目录结构可以看下目录结构介绍

image.png

1:AppScope 应用的全局配置信息 整个项目的全局配置信息

  1. resoures 全局资源文件
  2. app.json5 全局配置文件

2. entry 主项目的的目录,软件的启动以及主要代码编写的位置

  • src > main > ets:用于存放ArkTS源码。

  • src > main > ets > entryability:应用/元服务的入口。

  • src > main > ets > pages:应用/元服务包含的页面。

  • src > main > resources: 用于存放应用/元服务模块所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件的详细说明请参考资源分类与访问

  • module.json5

   {
 "module": {
   "name": "entry",
   "type": "entry",
   "description": "$string:module_desc",  // 模块描述,用于显示在系统设置中
   "mainElement": "EntryAbility",        // 应用入口能力组件
   "deviceTypes": [
     "tv",
     "tablet"
   ],  // 支持的设备类型
   "deliveryWithInstall": true,         // 是否随应用安装一起交付
   "installationFree": false,            // 是否免安装运行
   "pages": "$profile:main_pages",       // 应用主页面配置文件
   "virtualMachine": "ark",              // 使用Ark虚拟机
   "metadata": [
     {
       "name": "string",
       "value": "string",
       "resource": "$profile:distributionFilter_config"  // 分发过滤配置
     }
   ],
   "abilities": [
     {
       "name": "EntryAbility",
       "srcEntry": "./ets/entryability/EntryAbility.ts",  // 入口能力实现代码路径
       "description": "$string:EntryAbility_desc",       // 能力描述
       "icon": "$media:layered_image",                   // 应用图标
       "label": "$string:EntryAbility_label",           // 显示名称
       "startWindowIcon": "$media:icon",                // 启动窗口图标
       "startWindowBackground": "$color:start_window_background",  // 启动窗口背景色
       "exported": true,                                // 是否对外暴露
       "skills": [  // 声明该能力支持的场景
         {
           "entities": [
             "entity.system.home"
           ],
           "actions": [
             "ohos.want.action.home"
           ]
         }
       ]
     }
   ],
   "requestPermissions": [
     {
       "name": "ohos.abilitydemo.permission.PROVIDER",  // 请求的权限名称
       "reason": "$string:reason",                      // 权限申请理由
       "usedScene": {
         "abilities": [
           "FormAbility"
         ],
         "when": "inuse"                               // 使用场景:应用运行时
       }
     }
   ]
 },
 "targetModuleName": "feature",         // 目标模块名称
 "targetPriority": 50,                  // 模块加载优先级
 "isolationMode": "nonisolationFirst"   // 隔离模式配置
   }

说明: - ets 主要代码的目录 - EntryAbility 程序入口(Application) - module.json5 清单文件(AndroidManifest.xml)

3.EntryAbility 程序入口,用于初始化数据和配置全局展示的一下属性

// EntryAbility 类继承自 UIAbility,用于管理应用的生命周期和窗口阶段

export default class EntryAbility extends UIAbility {
    /**
     * 当应用能力被创建时调用
     * @param want - 描述请求操作和目标的 Want 对象
     * @param launchParam - 启动参数,包含启动模式等信息
     */
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
        // 设置应用的颜色模式为未设置,让系统根据自身策略决定颜色模式
        this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
    }

    /**
     * 当应用能力被销毁时调用
     */
    onDestroy(): void {
        // 此方法原用于日志记录,现去掉日志打印,可根据需求添加实际销毁逻辑
    }

    /**
     * 当主窗口创建时调用
     * @param windowStage - 窗口阶段对象,用于加载内容和管理窗口
     */
    onWindowStageCreate(windowStage: window.WindowStage): void {
        // pages/Index  加载启动的页面
        windowStage.loadContent('pages/Index', (err) => {
            if (err.code) {
                // 若加载内容失败,可根据需求添加错误处理逻辑
                return;
            }
            // 若加载内容成功,可根据需求添加成功后的逻辑
        });
    }

    /**
     * 当主窗口销毁时调用
     */
    onWindowStageDestroy(): void {
    
    }

    /**
     * 当应用能力进入前台时调用
     */
    onForeground(): void {

    }

    /**
     * 当应用能力进入后台时调用
     */
    onBackground(): void {

  }
}

4.Index.ets 首次启动的组件页面

@Entry 表示启动入口的装饰器 @Component 表示组件的装饰器

struct 搭配@Component 创建组件

@Entry 
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          this.message = 'Welcome';
        })
    }
    .height('100%')
    .width('100%')
  }
}

总结

HarmonyOS创建流程 1.创建一个HarmonyOS 的项目 会创建一个entry(默认)的主module 和 AppScope文件夹

  • entry 主项目的代码和资源位置
  • AppScope文件夹 全局属性配置的文件夹

2: entry/src/main/ets 存放主要代码

3: entry/src/main/resources 存放资源文件

4: entry/src/main/module.json5 清单文件

名字,标题,启动的Ability,启动的index.ets(profile:main_pages),权限都是在这里配置

5: EntryAbility(Application) 程序启动首先启动的位置类似Android的Application 这里启动打开组件

6:Index.ets 主组件 启动的页面在EntryAbility中配置启动

注意: Index.ets 需要在module.json5 的pages 属性关联的profile:main_pages 中配置类似android Activity