廊坊专业网站网站,wordpress设置撰写,西宁专业做网站公司,在线制作动画的网站作为一名鸿蒙程序猿#xff0c;当你换了一家公司#xff0c;或者被交接了一个已有的业务。前辈在找你之前十分钟写了一个他都看不懂的交接文档#xff0c;然后把一个鸿蒙工程交接给你了#xff0c;说以后就是你负责了。之后几天你的状态大概就是下边这样的#xff0c;一堆… 作为一名鸿蒙程序猿当你换了一家公司或者被交接了一个已有的业务。前辈在找你之前十分钟写了一个他都看不懂的交接文档然后把一个鸿蒙工程交接给你了说以后就是你负责了。之后几天你的状态大概就是下边这样的一堆的需求和Bug朝你蜂拥而至。 程序员工作交接 为了尽可能缩短这个阶段新手鸿蒙开发的兄弟可以看看这篇文章如何快速上手熟悉一个鸿蒙工程。主要是配置相关的内容看完之后帮你快速找到程序的入口便于分析后续的逻辑。 本文的工程目录结构是目前最新的ArkTS Stage模型的工程目录结构使用DevEco Studio 5.0.0 Release2024年10月份发布版本不排除以后鸿蒙工程架构会升级但是大的结构是不会变的 。 官网的文档在这大家也可以直接去官网看讲得也挺清楚的 文档中心
1、主工程配置 AppScope目录是影响整个工程的app.json目录相当于Android工程中的build.gradle文件其中定义了工程的包名、版本号等一系列信息具体的含义我都列出来了。
没有列出来的都是非必填项
{app: {// 必填应用的包名用于唯一标识一个应用类似于Android的packagenamebundleName: com.example.arklearn,// 非必填开发商描述vendor: example,// 必填版本号一个整数同Android的versioncodeversionCode: 1000000,// 必填版本名称同Android的versionnameversionName: 1.0.0,// 必填应用图标icon: $media:app_icon,// 必填应用名称label: $string:app_name}
}更多关于app.json5的详细介绍可参见官方文档 文档中心 除了app.json5文件外还有一个resource文件夹。没错见名知意这里边放的是整个工程都可以访问的资源文件比如string值和图片等
2、程序入口
看完主工程的配置了我需要进一步研究代码了程序入口在哪呢 因为鸿蒙采用的应用/元服务这种逻辑结构一个工程下边可以包含多个应用/元服务。每个应用/元服务可以打包成一个hap包独立运行。不讲太复杂了记着一件事Entry就是应用的主模块作为应用的入口提供了应用的基础功能。所以程序入口就看这个entry--src--main目录下的module.json5文件
配置的具体含义我列一下
{module: {// 非必填这个元服务需要申请的权限列表就是Android的Manifest文件中列的权限requestPermissions: [{name: ohos.permission.INTERNET}],// 必填当前module的名称name: entry,// 必填标识当前Module的类型。支持的取值如下// entry应用的主模块// feature应用的动态特性模块// har静态共享包模块android的aar// shared动态共享包模块android的sotype: entry,// 非必填当前module的描述信息description: $string:module_desc,// 非必填但是一般都会填。标识当前Module的入口UIAbility名称是在下边的abilities中定义的// 这个Ability相当于Android的ActivitymainElement: EntryAbility,// 必填标识当前module可以运行在哪类设备上deviceTypes: [phone,tablet,// 融合了屏幕触控和键鼠操作的二合一设备2in1],// 必填应用安装的时候这个module是不是默认安装如果是入口的module那就必须安装deliveryWithInstall: true,// 必填当前module是不是支持免安装特性意思就是用的时候再安装。// 如果是一个元服务这个地方可以为true如果是应用必须为falseinstallationFree: false,// 在有UIAbility的场景下必填意思就是你声明的page都在哪放着呢// 当前这个配置标识page声明是在当前module的// src/main/resources/base/profile/main_pages.json文件中存的pages: $profile:main_pages,// 一个数组声明当前module有哪些ability类似于android的acitvityabilities: []}
}
看这个文件你可以找到entry这个modue的入口Ability是EntryAbility 找到这个对应的EntryAbility类进入看代码具体每个回调函数的意思先不讲跟Android Activity的回调比较像。 你就看onWindowStageCreate回调函数中windowStage.loadContent的传参是什么。pages/Index就表示入口的page是Index Index对应的文件目录是src/main/ets/pages/Index.ets
这样你就找到程序的入口了进入看代码逻辑吧
3、常见目录和文件都放的什么
先看工程级别的全局配置 文件名称 说明 oh-package 这是一个文件夹用于存放工程编译时依赖的三方库。具体依赖哪些库呢是在oh-package.json5文件中定义的 build-profile.json5 工程级别的配置信息包括签名、产品配置 hvigorfile.ts 工程级的编译构建任务脚本 具体想看如何配置签名文件编译鸿蒙工程的可以看我的这篇文章 鸿蒙工程签名编译和上架_鸿蒙对包进行签名-CSDN博客 oh-package.json5 描述全局配置如依赖覆盖overrides、依赖关系重写overrideDependencyMap和参数化配置
module级别的一些配置以entry模块为例 文件名称 说明 src/main/ets 码的代码就在这放着呢 src/main/ets/entryability 应用/元服务的入口Ability类似android的activity src/main/ets/pages 应用/元服务包含的页面就是你能看到的UI交互类似android的fragment src/main/resource 资源文件存放的目录类似于android的res resource/profile/main_pages.json5 所有的page都得在这个文件中注册 module.json5 上边有详细讲应用/元服务的详细配置 build-profile.json5 module级别的配置信息包括签名、产品配置 hvigorfile.ts module级的编译构建任务脚本 oh-package.json5 描述module配置如依赖覆盖overrides、依赖关系重写overrideDependencyMap和参数化配置
基本上看到这你就知道你接手的这个工程的入口在哪有哪些page用到的资源有哪些签名编译情况依赖了哪些三方库。剩下的就是看代码赶紧入坑了