当前位置:首页>鸿蒙APP>鸿蒙 PC 三方库适配 HNP 打包流程的"入场券"hnp.json 文件解读

鸿蒙 PC 三方库适配 HNP 打包流程的"入场券"hnp.json 文件解读

  • 2026-07-23 10:31:46
鸿蒙 PC 三方库适配 HNP 打包流程的"入场券"hnp.json 文件解读

鸿蒙 PC 三方库适配  HNP 打包流程的"入场券"hnp.json 文件解读

项目路径[1]

前言

如果你刚接触 OpenHarmony 的三方库适配,可能会觉得 hnp.json 这个文件看起来太简单了——只有区区几行 JSON,甚至 install 还是个空对象。它真的有那么重要吗?

答案是:非常重要hnp.json 虽然小,但它是整个 HNP 打包流程的"入场券"。没有它,打包工具根本不认识你的库;有了它,才能把编译产物变成 OpenHarmony 设备上可安装的原生包。

这篇文章就用通俗的方式,把 hnp.json 的每个字段、它在构建流程中的位置、以及实际使用中的注意事项讲清楚。


先看文件长什么样

SHA 库的 hnp.json 内容如下:

{"type""hnp-config","name""sha","version""1.1.0","install": {}}

就这 5 行有效内容。但每一行都有它的作用,下面逐个拆解。


逐字段解读

1. type — "我是谁"

"type""hnp-config"

通俗理解:这个字段就像身份证上的"证件类型",告诉读取这个文件的程序:"我是一个 HNP 配置文件,不是别的什么东西。"

技术细节

  • 固定值,必须是 "hnp-config"
  • HNP 打包工具(hnpcli)在打包时,首先检查这个字段
  • 如果 type 不是 "hnp-config",打包工具会拒绝处理,直接报错

类比:就像 XML 文件头部的 <?xml version="1.0"?> 声明,或者 HTML 的 <!DOCTYPE html>,是一种"自我声明"机制。


2. name — "我叫什么"

"name""sha"

通俗理解:包的名字。就像你安装 App 时看到的包名,比如微信叫 com.tencent.mm,这里 SHA 库就叫 sha

技术细节

  • 必须与 HPKBUILD 中的 pkgname 保持一致
  • 也必须与 README.OpenSource 中的 Name 保持一致
  • 打包后生成的 HNP 包文件名就是 sha.hnp

一致性对照

文件
字段
hnp.json
namesha
HPKBUILD
pkgnamesha
README.OpenSource
Namesha

三个文件中的名称必须统一,否则构建系统会混乱——想象一下,如果身份证、户口本、护照上的名字不一样,办事时会有多麻烦。


3. version — "我几岁了"

"version""1.1.0"

通俗理解:HNP 包的版本号。就像手机 App 的版本号(比如微信 8.0.33),用来区分同一个包的不同版本。

技术细节

  • 采用语义化版本号格式:主版本.次版本.修订号(Major.Minor.Patch)
  • 这里的 1.1.0 是 HNP 包自身的版本,不是上游 SHA 库的版本

一个容易混淆的点

很多人会问:为什么 version 是 1.1.0,而 HPKBUILD 里的 pkgver 是一长串 commit hash 3ee0d88fc4f629b2e084f1b4cbf22cd3597542fb

它们是两个不同的版本概念

版本
含义
谁定义的
version
(hnp.json)
HNP 包的发布版本
1.1.0
适配维护者
pkgver
(HPKBUILD)
上游源码的版本标识
3ee0d88...
上游仓库

打个比方:pkgver 是"原材料批次号"(你用了哪一批源码),version 是"产品型号"(你发布的包是第几版)。同一批原材料可以生产多个产品版本(比如修复了适配 bug,重新打包),同一个产品版本也可能换过原材料(比如升级了上游版本但接口没变)。


4. install — "安装后要做什么"

"install": {}

通俗理解:安装后的额外操作配置。目前是空对象 {},意思是"安装完就完事了,不需要额外操作"。

技术细节

  • 类型是 JSON 对象
  • 空对象 {} 表示无需额外安装步骤
  • 如果需要,可以配置安装后的脚本执行、环境变量设置等

什么时候需要填写 install?

大多数简单的库都不需要,{} 就够了。但在以下场景可能需要:

  • 需要注册系统服务:安装后要注册一个守护进程
  • 需要设置环境变量:安装后要往系统 PATH 里加路径
  • 需要执行初始化脚本:安装后要跑一段配置脚本
  • 需要创建符号链接:安装后要建立特定的链接关系

假设的复杂 install 示例(仅作说明,SHA 库不需要):

"install": {"post-install""scripts/setup.sh","env": {"SHA_HOME""${install_dir}"    }}

对于 SHA 这种纯算法库,安装就是把头文件和库文件放到正确位置,不需要额外操作,所以 {} 完全合理。


hnp.json 在构建流程中的位置

光看文件本身可能觉得简单,但把它放到整个构建流程中,就能理解它的关键作用了。

构建流程全景

源码下载(git clone)    │    ▼应用补丁(patch)    │    ▼编译构建(cmake + make)    │    ▼安装产物(make install)     ← 产物放到 usr/sha/arm64-v8a/ 等目录    │    ▼┌─────────────────────────────────────────────┐│  打包阶段(archive 函数)                    ││                                              ││  ① 打 tar.gz 包                             ││  ② 复制 hnp.json 到产物目录  ← 关键步骤!  ││  ③ 设置架构环境变量                         ││  ④ 执行 hnpcli pack 打 HNP 包               ││  ⑤ 清理环境变量                             │└─────────────────────────────────────────────┘    │    ▼生成最终产物:sha.hnp + sha_xxx.tar.gz

HPKBUILD 中的关键代码

在 HPKBUILD 的 archive() 函数中,有这样一行:

cp hnp.json $LYCIUM_ROOT/usr/$pkgname/$ARCH

这行代码做的事情很简单:把 hnp.json 复制到编译产物目录中

为什么要这么做?因为 hnpcli pack 打包工具在生成 HNP 包时,需要从产物目录中读取 hnp.json 来识别包的元数据。没有这个文件,打包工具不知道这是什么东西,自然无法生成 .hnp 包。

打包命令

${HNP_TOOL} pack -i ${LYCIUM_ROOT}/usr/$pkgname/$ARCH -o ${LYCIUM_ROOT}/output/$ARCH/
  • -i:输入目录,即包含 hnp.json 和编译产物的目录
  • -o:输出目录,生成的 .hnp 包放在这里

hnpcli 会在输入目录中寻找 hnp.json,读取其中的 nameversion 等信息,然后把整个目录打包成 sha.hnp


hnp.json 的文件分布

在 SHA 库的适配中,hnp.json 出现在多个位置:

lycium_plusplus/thirdparty/sha/├── hnp.json                          ← 源文件(手写)├── HPKBUILD├── HPKCHECK└── output/    └── usr/        └── sha/            ├── arm64-v8a/            │   └── hnp.json          ← 复制来的(构建时自动复制)            └── armeabi-v7a/                └── hnp.json          ← 复制来的(构建时自动复制)
  • **根目录的 hnp.json**:这是开发者手写的源文件,是"原件"
  • **产物目录中的 hnp.json**:构建时由 cp hnp.json ... 命令复制过去,是"复印件"

两个架构(arm64-v8a 和 armeabi-v7a)的 hnp.json 内容完全相同,因为包的元数据不随架构变化。


HNP 包是什么?

理解 hnp.json 的意义,需要先理解 HNP 包是什么。

类比理解

概念
类比
HNP 包
Android 的 APK、iOS 的 IPA、Linux 的 deb/rpm
hnp.json
APK 中的 AndroidManifest.xml
hnpcli
Android 的 aapt/apksigner 打包工具

HNP(Harmony Native Package)是 OpenHarmony 的原生库包格式,专门用于分发 C/C++ 原生库。它把头文件、库文件、可执行文件等打包在一起,方便在 OpenHarmony 设备上安装和使用。

HNP 包 vs tar.gz 包

SHA 库的构建会同时生成两种包:

包类型
文件名
格式
用途
HNP
sha.hnp
OpenHarmony 专有格式
在 OpenHarmony 设备上安装
tar.gz
sha_3ee0d88....tar.gz
通用压缩格式
通用分发、手动部署

hnp.json 只对 HNP 包有意义,tar.gz 包不需要它。

HNP 包的内部结构

一个 HNP 包本质上是一个包含特定目录结构的压缩包:

sha.hnp├── hnp.json           ← 包的"身份证"├── bin/               ← 可执行文件│   ├── hmac│   ├── pwd2key│   ├── sha256sum│   └── sha_test├── include/           ← 头文件│   └── sha/│       ├── sha1.h│       ├── sha2.h│       ├── hmac.h│       └── ...└── lib/               ← 库文件    ├── libsha.so    ├── libsha_static.a    └── cmake/        └── sha/

hnp.json 就放在包的根目录,是整个包的入口文件。


常见问题

Q1:hnp.json 可以省略吗?

不可以。 如果没有 hnp.jsonhnpcli pack 命令会报错,无法生成 HNP 包。它是打包的必要条件。

Q2:type 字段可以改成别的值吗?

不可以。type 必须是 "hnp-config",这是打包工具识别配置文件的固定标识。改成别的值会导致打包失败。

Q3:name 可以和 pkgname 不一样吗?

强烈不建议。 虽然技术上可能不会直接报错,但名称不一致会导致:

  • 包管理混乱,无法通过名称找到对应的包
  • 依赖解析出错
  • 用户使用时产生困惑

Q4:version 为什么要和上游版本分开?

因为它们描述的是不同的事情:

  • 上游版本(commit hash):描述"用了什么源码"
  • HNP 版本(1.1.0):描述"发布了什么包"

实际场景:你可能用同一份源码发布了两次包(第一次有 bug,修复后重新打包),这时上游版本没变,但 HNP 版本应该从 1.1.0 升到 1.1.1。

Q5:install 什么时候需要填写?

对于大多数纯库(如 SHA、加密算法库、数学库等),{} 就够了。只有需要安装后执行额外操作的场景才需要填写,比如:

  • 需要注册系统服务
  • 需要修改系统配置
  • 需要设置环境变量

Q6:修改 hnp.json 后需要重新构建吗?

需要。hnp.json 是在 archive() 阶段被复制到产物目录并参与打包的。修改后需要重新执行打包步骤,新的 hnp.json 才会生效。

如果只是修改了 hnp.json(没改源码),可以只重新执行 archive 步骤,不需要重新编译。


实践建议

1. 保持三个文件名称一致

hnp.json       →  "name""sha"HPKBUILD        →  pkgname=shaREADME.OpenSource →  "Name""sha"

2. 版本号要有意义

HNP 版本号建议遵循语义化版本规范:

变更类型
版本更新方式
示例
重大接口变更
主版本 +1
1.1.0 → 2.0.0
新增功能
次版本 +1
1.1.0 → 1.2.0
Bug 修复
修订号 +1
1.1.0 → 1.1.1

3. 不要手动修改产物目录中的 hnp.json

产物目录中的 hnp.json 是自动复制的,手动修改会在下次构建时被覆盖。只修改根目录的源文件。

4. 将 hnp.json 纳入版本控制

hnp.json 是项目配置的一部分,应该和 HPKBUILDHPKCHECK 一起纳入 Git 版本控制。


总结

hnp.json 虽然只有几行,但它是 HNP 打包流程的关键配置文件:

字段
作用
类比
type
声明文件类型
身份证的"证件类型"
name
包的名称
人的姓名
version
包的发布版本
人的年龄/年级
install
安装后操作
入学后的注册手续

核心要点

  • hnp.json 是生成 HNP 包的必要条件,没有它就无法打包
  • name 必须与 HPKBUILD 和 README.OpenSource 中的名称保持一致
  • version 是 HNP 包自身的版本,与上游源码版本是两个概念
  • install 大多数情况下为空 {},只有特殊需求才需要填写
  • 它在构建的 archive() 阶段被复制到产物目录,供 hnpcli pack 读取

一个小文件,一个大门道。理解了 hnp.json,就理解了 OpenHarmony 原生包打包的入口逻辑。

如果这篇文章对你有帮助,麻烦大家点赞 + 收藏 + 转发三连支持~ 你们的每一份认可,都是我持续输出技术干货的最大动力!后续还会带来更多实操教程,技术解读。记得关注不迷路哦~

也欢迎添加我的联系方式,咱们交个朋友!未来我也会持续分享各类前沿技术干货。


参考资料
[1] 

项目路径: https://atomgit.com/oh-tpc/pc_sha/blob/main/hnp.json

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-31 08:26:58 HTTP/2.0 GET : https://c.mffb.com.cn/a/485586.html
  2. 运行时间 : 0.121748s [ 吞吐率:8.21req/s ] 内存消耗:4,407.67kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=18498a15398f87d964754d04def3eeee
  1. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/runtime/temp/cefbf809ba1a84190cb04b0cb7abcf79.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001155s ] mysql:host=127.0.0.1;port=3306;dbname=c_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001801s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002377s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000749s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001475s ]
  6. SELECT * FROM `set` [ RunTime:0.000624s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001689s ]
  8. SELECT * FROM `article` WHERE `id` = 485586 LIMIT 1 [ RunTime:0.001122s ]
  9. UPDATE `article` SET `lasttime` = 1785457618 WHERE `id` = 485586 [ RunTime:0.015946s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000708s ]
  11. SELECT * FROM `article` WHERE `id` < 485586 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001169s ]
  12. SELECT * FROM `article` WHERE `id` > 485586 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001093s ]
  13. SELECT * FROM `article` WHERE `id` < 485586 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001905s ]
  14. SELECT * FROM `article` WHERE `id` < 485586 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001811s ]
  15. SELECT * FROM `article` WHERE `id` < 485586 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001875s ]
0.125788s