《HarmonyOSNext超强指南:3D解剖工程结构+三大包选型绝招!》

2025-06-11 21:32:43
109次阅读
0个评论

《HarmonyOSNext超强指南:3D解剖工程结构+三大包选型绝招!》

##Harmony OS Next ##Ark Ts ##教育

本文适用于教育科普行业进行学习,有错误之处请指出我会修改。


🚀 先来动手玩玩吧!

Hey朋友~别光看理论,马上在DevEco Studio里新建一个工程!💻 记得多试几种不同的Module类型(比如entry、library啥的),边玩边对照实际工程的目录结构学本章节~ 这样能秒懂开发态的应用架构!


🗂️ 工程结构超全拆解(必看!)

简单说就是两大块:AppScope目录Module目录~来划重点👇

  • AppScope目录 ➡️ DevEco Studio自动生成,不能改它
  • Module目录 ➡️ 可以自动命名(比如entry)或你自定义(俺用 Module_name 代表它)
文件类型 存放位置 & 作用说明 💡
配置文件 • AppScope > app.json5:应用级配置!包名、App名字、图标、版本号全在这儿📱 • Module_name > src > main > module.json5:Module基本信息、设备支持、权限申请啥的⚙️
ArkTS源码文件 Module_name > src > main > ets:所有Module的.ets源码都蹲这儿!👨‍💻 (代码示例👉 ArkTs function helloWorld() { console.log("Hi!") }
资源文件 • AppScope > resources:整个App用的图/视频/字符资源🎨 • Module_name > src > main > resources:单Module专属资源! (支持布局文件、多媒体等~详情看「资源分类与访问」🔗)
其他配置文件 用来编译构建的: • build-profile.json5:签名和产品配置🔏 • hvigorfile.ts:自定义构建脚本⚡️ • obfuscation-rules.txt:Release模式自动混淆代码(防扒🛡️) • oh-package.json5:依赖库信息(三方库/共享包) 📦

⚠️ 重点提示: AppScope资源如果和Module资源同名,编译后​​只保留AppScope的​​!别踩坑~


🔧 编译态大变身!

开发态 → 编译态,神奇的事情发生了✨:

  • ets目录:.ets源码秒变.abc文件🔮
  • resources目录:AppScope资源直接合并进Module里
  • 配置文件:app.json5字段全塞进module.json5~ (最终生成HAP/HSP的module.json文件✅)

💥 爆炸冷知识: 编译HAP/HSP时,依赖的HAR会​​直接被编译进去​​!不用单独处理~


📦 发布态包结构(上架必备!)

你的应用最终会变成这样👇

  • 至少1个.hap文件(可能再加.hsp文件) → 合起来叫Bundle(唯一ID是bundleName📍)
  • 上架应用市场时:Bundle打包成.app文件(叫 App Pack),同时自动生成pack.info📄(描述HAP/HSP属性)

🎯 关键区别表:

状态 文件 用途
编译态 HAP/HSP 本地编译产物,可直接在设备安装运行🏃‍♂️
发布态 .app + .info 不能直接安装!专为应用市场分发设计🛒

🤔 三大包类型咋选?速藏对比表!

纠结用HAP、HAR还是HSP?直接看这个↓ 秒懂!(规格支持“√”=是,“×”=否)

规格 \ 包类型 HAP HAR HSP
声明UIAbility/Extension × ×
声明pages页面 ×
含资源/.so文件
依赖其他HAR/HSP
设备独立安装运行 × ×

📌 超实用场景总结:

包类型 使用场景 & 优缺点 ⚖️
HAP App核心模块!必须有一个entry类型,可加feature类型✅ ✔️ 独立安装 ✖️ 多包引用会代码重复
HAR 静态共享包(适合发布到OHPM仓库供他人用🔄) ✔️ 编译复用 ✖️ 多包引用时疯狂增大包体积⚠️ (建议开混淆!保护代码🔐)
HSP 动态共享包(运行时复用,包体积救星🌟) ✔️ 避免HAR的重复问题 ✖️ 仅支持应用内共享🚧

🔥 血泪忠告:

  1. HAR如果依赖HSP → 只能在你的App内部用! 发到仓库会编译报错💥
  2. HAR/HSP不支持循环依赖! 写配置时擦亮眼👀

💎 一句话总结:

工程玩得6 = 理清开发态/编译态差异 + 选对包类型(HAP必选,HAR/HSP按需上)!搞起~💪

收藏00

登录 后评论。没有帐号? 注册 一个。