当前位置: 首页 > article >正文

Laya导出的鸿蒙NEXT工程目录说明

文章目录结论顶层目录说明entry模块内部怎么理解src/main/module.json5 —— 类似Manifest.xmlsrc/main/resources/base/profile/main_pages.jsonsrc/main/ets/MainAbility/MainAbility.etssrc/main/ets/pages/Index.etssrc/main/ets/workers —— worker线程相关的代码src/main/resources —— 资源目录src/main/cpp —— native入口目录libSysCapabilities模块内部怎么理解这是干什么的核心文件libSysCapabilities/src/当前工程的启用和调用链哪些目录可以改哪些尽量别动日常可改一般不要手改 ——构建产物依赖缓存IDE生成内容修改定位工程概括结论AppScope应用级配置entry主应用模块页面入口和资源都在这里libSysCapabilitiesLaya导出的系统能力桥接层entry/src/main/cppnative层入口连接liblaya.so顶层目录说明AppScope —— 应用级配置目录整个App的身份信息AppScope/app.json5定义了包名、版本、厂商、图标、应用名等全局信息entry —— 主应用模块大多数的接入工作都在这里oh-package.json5模块依赖build-profile.json5构建配置src/main/etsArkTS页面与业务入口src/main/resources资源文件src/main/cppnative构建入口libSysCapabilities —— Laya导出的“系统能力适配层”~ 一头连鸿蒙的ArkTS API - 一头连Laya/native引擎~接sdk时通常会改这里或者参考这里的写法拓展如果sdk需要处理一些比如如下的问题调用系统能力弹原生UI调起浏览器/网页网络请求视频、输入框、设备信息oh_modules类似node_modules通常不用改由ohpm/工程构建自动维护.hvigor构建缓存和构建产物索引目录通常不手改因为是“构建过程的中间缓存”hvigor、hvigorfile.ts —— 鸿蒙工程的构建系统入口工程级构建任务声明 、 构建插件入口当前的hvigorfile.ts很简单说明现在主要使用内置默认构建能力。build-profile.json5 —— 工程级构建配置本例工程包含两个模块entry 和 libSysCapabilities还配置了签名信息兼容SDK版本目标SDK版本dependencies —— 通常是构建过程中用到的依赖辅助目录。一般不作为日常修改入口优先看oh-package.json5和模块源码。entry模块内部怎么理解src/main/module.json5 —— 类似Manifest.xml这是主模块声明文件后续接SDK时非常重要。当前它负责声明模块类型是entry指定主入口EntryAbility指定页面路由配置pages$profile:main_pages声明权限requestPermissions ——【需要新增权限这里改配置一些metadata —— 【需要加metadata比如appId等自定义配置这里改src/main/resources/base/profile/main_pages.json这个是页面路由表当前只有一个页面pages/Index这说明当前工程实际是单页承载Laya内容src/main/ets/MainAbility/MainAbility.ets应用主入口鸿蒙Stage模型的UIAbility。它现在主要做了几件事调用natievAppLifecycle.onCreate()通知 —— native层。缓存AbilityContext初始化WebView内核调用laya.ConchNAPI_init()初始化Laya/native引擎通过onWindowStageCreate加载pages/Index配置全屏、隐藏系统栏、常亮 —— 通过getMainWindow得到window对象进行设置在前后台切换时把生命周期同步给nativeonForeground、onBackgroundsrc/main/ets/pages/Index.ets承载Laya画面的ArkUI页面同时负责挂在原生辅助组件。里面的关键点XComponent承载native/Laya渲染内容WorkerManager启动worker线程NapiHelper.registerUIFunctions()注册UI线程可调用的桥接方法ForEach()按需挂载输入框、webView、VideoPlayer等原生组件如果sdk需要以下内容大概率都和这个页面有关原生弹窗原生登录面板网页承载原生视频src/main/ets/workers —— worker线程相关的代码当前结构WorkerManager.ets创建、管理workerLayaWorker.ets worker线程主逻辑WorkerDataEntity.ets消息实体意义部分逻辑不直接放在UI线程里做通过worker与UI页面通信再由桥阶层决定调用系统API还是回调native注不是所有SDK调用都能随便放线程里做。src/main/resources —— 资源目录base/…鸿蒙标准资源如字符串、颜色、页面profilerawfile/…Laya资源包config.ini —— 配置包括watermark的scripts —— js库image —— logofont —— empty.txtca ——cert…a…cache/dcc2.0 —— Content-Addressable StorageSHA-1src/main/cpp —— native入口目录关键文件CMakeLists.txtnapi_init.cpp —— 注册N-API模块libentry/index.d.ts —— 声明native模块layalibentry/oh-package.json5以上让ArkTS侧可以通过 import laya from ‘liblaya.so’ 调用native导出能力如果遇到“某个SDK只有C/Cso” 或者 “必须从native层封装能力”这里就是入口。libSysCapabilities模块内部怎么理解这是干什么的这个模块本质上是一个har库类似jar名字叫做libSysCapabilities。它把鸿蒙系统能力按Laya可调用的形式包装了一层。当前已经封装好的能力包括DeviceUtilsApplicationManagerNetworkUtilsLayaHttpClientDialogWebViewVideoPlayerEditBoxSoundUtilsJumpManager核心文件libSysCapabilities/src/main/ets/napi/NapiHelper.ets —— 最重要的桥接注册文件。这里通过laya.JSBind.bindFunction(…)把ArkTS方法名暴露给Laya/native调用。新增SDK能力怎么做在某个XxxManager.ets写好方法在这里注册让Laya侧按约定的方法名来调main/ets/event/HandleMessageUtils.ets —— 预留的消息处理入口给异步/同步消息扩展留了位置如果SDK需要一个统一的事件分发层这里是很适合扩展的点main/ets/utils/WorkerMsgUtils.ets —— worker线程不能直接碰某些UI能力负责处理worker发到主线程的消息并按模块分发到之所以分发是因为需要通过消息回到主线程处理DialogWebViewJumpManagermain/ets/common/GlobalContext.ets —— 一个全局对象缓存器当前用来保存后续SDK接入时经常需要上下文、页面实例、全局单例经常会用到这AbilityContextworker实例WebView/VideoPlayer/EditBox的实例表dialog控制器等。当前工程的启用和调用链整体图景MainAbility启动应用 - 加载Index页面 - Index挂载XComponent和原生组件启动Worker - libSysCapabillities负责桥接鸿蒙API - liblaya.so/native引擎执行底层逻辑。更细一点MainAbility.ets —— 初始化应用与native引擎Index.ets —— 承载画面和UI组件LayaWorker.ets —— 负责worker线程逻辑WorkerMsgUtils.ets / HandleMessageUtils.ets —— 负责消息分发NapiHelper.ets —— 负责把ArkTS方法暴露给Laya/nativeentry/src/main/cpp —— 负责native 模块注册哪些目录可以改哪些尽量别动日常可改AppScopeentry/src/main/ —— ets/resources/cpp/module.json5entry/oh-package.json5entry/build-profile.json5libsysCapabilities/src/main —— ets/modules.json5一般不要手改 ——构建产物依赖缓存IDE生成内容.hvigoroh_modulesentry/buildlibSysCapabilities/build.idea修改定位AppScope/app.json5改包名、版本、应用名entry/src/main/module.json5Manifest.xml加权限、metadata、入口能力entry/src/main/ets/MainAbility/MainAbility.ets生命周期函数改页面启动前后台生命周期entry/src/main/ets/pages/Index.ets改Laya承载页面entry/src/main/ets/workers改线程通信libSysCapabilities/src/main/ets改系统桥接能力entry/src/main/cpp接native so / N-APIentry/src/main/resources/rawfile放游戏资源或静态配置工程概括Laya导出的鸿蒙壳工程接入sdk基本就是在这个壳和桥之间继续加能力entry应用壳【*libSysCapabilities平台能力桥【*liblaya.sonative引擎接口rawfile游戏资源包

相关文章:

Laya导出的鸿蒙NEXT工程目录说明

文章目录结论顶层目录说明entry模块内部怎么理解src/main/module.json5 —— 类似Manifest.xmlsrc/main/resources/base/profile/main_pages.jsonsrc/main/ets/MainAbility/MainAbility.etssrc/main/ets/pages/Index.etssrc/main/ets/workers —— worker线程相关的代码src/mai…...

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧

Steam成就管理器终极指南:5分钟掌握游戏成就管理技巧 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 如果你是一位Steam游戏玩家,是…...

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然

3步掌握DeepL翻译插件,让跨语言浏览像母语阅读一样自然 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 在信息爆炸的全球化时代,语言障碍依…...

手把手教你用VMware Workstation 17 Pro安装华为openEuler 22.03 LTS(附UKUI桌面安装教程)

从零开始:在VMware Workstation 17 Pro上部署openEuler 22.03 LTS全攻略 最近在开发者圈子里,华为的openEuler操作系统引起了广泛关注。作为一款面向数字基础设施的开源操作系统,openEuler不仅支持多种处理器架构,还在云计算、大…...

逆向分析第一课:拆解Cheat Engine Tutorial,理解程序内存与汇编指令的互动

逆向工程入门:通过Cheat Engine Tutorial透视程序内存与汇编的奥秘 当第一次打开Cheat Engine时,许多用户会被其看似复杂的界面所震慑——十六进制数值、内存地址、汇编指令这些术语仿佛在构建一道技术壁垒。但正是这套工具,为我们打开了一扇…...

从GESP三级C++考题到实战:手把手教你写一个密码强度检测器(附完整代码)

从GESP考题到工业级工具:用C构建智能密码强度检测系统 密码安全是数字世界的基石。想象一下,当你注册一个新服务时,系统如何判断你输入的密码是否足够强壮?这背后往往藏着一个精巧的密码检测逻辑。今天,我们就从GESP三…...

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配特定行业场景

AI Agent Harness Engineering 与大模型微调:如何让智能体更适配金融、医疗等强约束特定行业场景第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 主标题:AI Agent Harness Engineering 领域微调:破解强…...

局域网组网技术

与为了互联全球不同网络而设计的、复杂的OSI七层模型不同,局域网参考模型更专注于解决一个局部区域内的网络通信问题。因此,它的结构被大大简化了。下图清晰地展示了局域网参考模型与OSI模型的关系:一、设计思想:简化与专注局域网…...

Spring Boot Alibaba(三)----Sentinel

服务容错保护-Sentinel 一、 Sentinel 是个啥?为什么要用它? 1. 灵魂拷问:为什么要用? 想象一下这个场景: 上游服务(大哥)疯狂调用你的服务(小弟),你的服务又…...

别再手动记配置了!用这个批处理脚本,一键生成Windows10电脑的硬件信息报告

告别手动记录!全自动生成Windows10硬件报告的终极批处理方案 每次接手新电脑或排查故障时,你是否还在重复着"WinR→输入dxdiag→截图保存"的老套流程?IT运维工程师张伟曾用3小时手动记录50台办公设备的配置信息,直到他发…...

代码随想录—day11—栈与队列(part2)

题例:150. 逆波兰表达式求值 - 力扣(LeetCode) 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数&a…...

从手机TCP调试助手到单片机:ESP8266-01s数据透传完整链路搭建实录

从手机到单片机:ESP8266-01s数据透传实战指南 去年夏天,我在为一个智能农业项目搭建远程控制模块时,第一次真正体会到ESP8266-01s这个小巧WiFi模块的强大之处。当时需要在50米外的水泵控制器上实现手机远程开关,而ESP8266-01s配合…...

大模型的探索与实践-课程笔记(四):Agent与Multi-Agent

Take-away MessagesAgent智能体 让大模型能够调用工具 规划、记忆、行动 Manus / OpenManus 在本地部署OpenManusMulti-Agent 任务分解、任务联动 Coze 利用Coze构建智能体1.1 从大模型(LLM)到智能体(Agent)1. 概念演进&#xff1…...

【马斯克系 | AI版图】xAI合并SpaceX之后,紧接着是Cursor——1.25万亿美元之后,马斯克还在买什么

一、合并全景:1.25万亿美元背后的估值逻辑 从180亿到2500亿:18个月估值十倍跃迁 2024年5月,xAI的B轮融资在行业内引发过一轮讨论。 彼时距离这家公司成立才14个月,旗下核心产品Grok-1刚刚开源3140亿参数模型,市场评…...

机械识图:基本视图

在机械图样的表示法中,可分为基本表示法和特殊表示法。 基本表示法:图样画法是以真实投影为基础的画法,但画出的图形又不完全是机件(工程形体)的真实投影。 特殊表示法:图样画法是采用特殊的规定画法来表示…...

实测PCIE 3.0 x8带宽逼近极限?手把手调试AXI Bridge实现6.6GB/s传输与4GB/s落盘

PCIe 3.0 x8极限带宽实战:AXI Bridge调优实现6.6GB/s传输与4GB/s落盘 当数据洪流遇上硬件瓶颈,每一位追求极致性能的工程师都面临着同样的挑战:如何在有限带宽下榨干每一滴传输潜力。本文将带你深入PCIe 3.0 x8的带宽优化前线,从硬…...

MyBatis-Plus 3.5升级后,分页插件PaginationInterceptor报错?手把手教你换成PaginationInnerInterceptor

MyBatis-Plus 3.5升级后分页插件报错全解析:从问题定位到完美修复 最近在升级MyBatis-Plus到3.5版本后,不少开发者发现原本运行良好的分页功能突然报错,控制台抛出各种异常信息。这实际上是MyBatis-Plus团队对分页机制进行了重构导致的兼容性…...

告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南

告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南 【免费下载链接】mousejiggler Mouse Jiggler is a very simple piece of software whose sole function is to "fake" mouse input to Windows, and jiggle the mouse pointer back and forth.…...

2026年Context Engineering完全指南:上下文即代码

"Prompt Engineering 已死,Context Engineering 万岁。"这句在 AI 工程圈流传的话,道出了一个真相:决定 LLM 输出质量的,不是几句巧妙的措辞,而是你如何系统性地管理模型的上下文窗口。本文从理论到工程实践…...

Tools for Humanity 宣布与布鲁诺·马尔斯巡演合作遭否认,Concert Kit 将改在杰瑞德·莱托乐队巡演推出

眼球扫描初创公司宣布合作巡演却遭否认,Concert Kit改在杰瑞德莱托乐队巡演推出山姆阿尔特曼创立的眼球扫描初创公司 Tools for Humanity 上周宣布,一款名为 Concert Kit 的新产品将首先在布鲁诺马尔斯最新录音室专辑《The Romantic》的世界巡演中推出&a…...

Kubernetes 集群服务发现机制详解

Kubernetes 集群服务发现机制详解 在现代云原生架构中,服务发现是微服务通信的核心环节。Kubernetes 作为容器编排的事实标准,提供了高效且灵活的服务发现机制,帮助开发者在动态环境中实现服务间的稳定通信。本文将深入解析 Kubernetes 的服…...

从手机拍照到NeRF建模:相机标定参数(内参/外参)到底在忙活啥?

从手机拍照到NeRF建模:相机标定参数(内参/外参)到底在忙活啥? 当你用手机拍下一张照片时,是否注意到画面边缘的直线有时会弯曲?或者在使用AR应用时,虚拟物体为何能稳稳"坐"在桌面上&a…...

番茄小说离线阅读神器:fanqienovel-downloader让你的数字图书馆永不消失

番茄小说离线阅读神器:fanqienovel-downloader让你的数字图书馆永不消失 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经遇到过这样的情况?深夜追更的小说…...

清华PPT模板终极指南:3分钟打造专业学术汇报演示

清华PPT模板终极指南:3分钟打造专业学术汇报演示 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报的PPT设计而烦恼吗?THU-PPT-Theme项目为你提供了一套完整的清华大学…...

如何快速上手开源游戏资源编辑器:Harepacker-resurrected完整实战指南

如何快速上手开源游戏资源编辑器:Harepacker-resurrected完整实战指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacke…...

终极指南:如何将闲置电视盒子改造为高性能Armbian服务器

终极指南:如何将闲置电视盒子改造为高性能Armbian服务器 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588…...

5分钟快速上手:Unlock-Music浏览器音乐解密终极指南

5分钟快速上手:Unlock-Music浏览器音乐解密终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...

除了HTB,还有哪些适合新手的网络安全靶场?VulnHub、TryHackMe、PentesterLab横向对比

网络安全新手靶场全指南:从VulnHub到TryHackMe的深度横评 当我在2019年第一次接触网络安全实战训练时,面对琳琅满目的在线靶场平台完全不知所措。作为过来人,我深刻理解新手在选择第一个训练平台时的困惑——HackTheBox(HTB&#…...

Koodo Reader:如何用AI智能助手打造你的终极数字阅读体验

Koodo Reader:如何用AI智能助手打造你的终极数字阅读体验 【免费下载链接】koodo-reader A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux, Android, iOS and Web 项目地址: https://gitcode.com/GitHub_Trending/…...

如何通过PDown百度网盘高速下载器免费突破限速:终极指南

如何通过PDown百度网盘高速下载器免费突破限速:终极指南 【免费下载链接】pdown 百度网盘下载器,2020百度网盘高速下载 项目地址: https://gitcode.com/gh_mirrors/pd/pdown PDown是一款完全免费的百度网盘高速下载工具,无需登录账号即…...