# global
**Repository Path**: harmony-free/global
## Basic Information
- **Project Name**: global
- **Description**: 鸿蒙全局配置
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2024-08-31
- **Last Updated**: 2025-11-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# global
#### 介绍 [English](README.en.md)
这是一个全局功能,全局信息、请求权限、日志信息、异常捕获、Navigation路由封装、首选项才存储封装、屏幕适配等app相关信息。
1、刘海屏适配参数,top,bottom,contextWidth,contextHeight等屏幕参数。
2、window 沉浸式导航设置以及路由跳转监听。
3、app 包的信息,版本好,包名,打包环境等信息。
4、router 基于 Navigation封装的 router 使用方式和原router一致
5、Preferences 工具类,可直接引用或者继承。
| 主要功能 | 模块 | 使用方式 | 介绍 |
|------|-------------|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| 全局信息 | global | global.setWindow(mainWindow) | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/Global.ets) |
| 请求权限 | permissions | // 权限请求会弹窗提示
global.requestPermissions() | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/Global.ets) |
| 日志信息 | Log | // 摇晃手机会打开日志
global.openLog() | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/Log.ets) |
| 异常捕获 | Error | global.onError() // 开启异常捕获
global.offError() // 关闭异常捕获 | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/Global.ets) |
| 路由信息 | router | router.push(name:string) // 跳转页面
router.back() // 返回上一页面 | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/Router.ets) |
| 首选项 | Preferences | PreferencesUtils // 可以继承 | [详细代码](https://gitee.com/harmony-free/global/blob/master/src/main/ets/system/PreferencesUtils.ets) |
| global信息 | api | 介绍 |
|-----------|-------------------|-----------------------------------------------------------------------------------------------------------------------------|
| 屏幕信息 | global.dis | [详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5#displaygetdisplaybyidsync12) |
| 主window信息 | global.main | [详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5) |
| 应用信息 | global.appInfo | [详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-applicationinfo-V5) |
| 打包信息 | global.bundleInfo | [详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-bundleinfo-V5) |
| 刘海屏高度 | global.top | 计算得出 |
| 底部凹陷高度 | global.bottom | 计算得出 |
| 内容宽度 | global.width | 计算得出 |
| 内容高度 | global.height | 计算得出 |
| 应用名称 | global.appName | 计算得出 |
| 应用包名 | global.bundleName | 计算得出 |
| 版本号 | global.version | 计算得出 |
| 打包环境 | global.env | 计算得出 |
#### 软件架构
软件架构说明
#### 安装教程
`ohpm install @free/global`
#### 使用说明
##### 一、全局参数使用方式
1、引入头文件
`import { global } from '@free/global';`
~~2、设置主window:在 EntryAbility 文件 onWindowStageCreate 方法中添加代码~~
`global.setWindow(windowStage.getMainWindowSync())`
```
onWindowStageCreate(windowStage: window.WindowStage): void {
...
global.setWindow(windowStage.getMainWindowSync())
...
}
```
3、开启错误拦截功能:在 EntryAbility 文件 onCreate 方法中添加代码
`global.onError()`
```
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
global.onError()
...
}
onDestroy(): void {
global.offError()
...
}
```
4、关闭错误拦截功能:在 EntryAbility 文件 onCreate 方法中添加代码
`global.offError()`
```
onDestroy(): void {
global.offError()
...
}
```
5、开启打印日志功能:在 EntryAbility 文件 onCreate 方法中添加代码
`global.openLog()`
```
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// type:"router"|"navigation" = "navigation" 设置路由模式 默认navigation
// num:number = 20 设置手机摇晃幅度
global.openLog()
...
}
onDestroy(): void {
global.closeLog()
...
}
```
配置 router
```
/// index.ets 文件
import { router, routerMap } from '@free/global';
// 配置 router.navPathStack 和 routerMap 使用 '@free/global' 中的 Navigation 路由 Router(如下)
Navigation(router.navPathStack){}.navDestination(routerMap)
```
##### 二、router使用方式
1、引入头文件
`import { NavBar, router, routerMap } from '@free/global';`
2、将 `router.navPathStack` 添加到 `Navigation`
`Navigation(router.navPathStack)`
3、再 `Navigation` 设置 `.navDestination(routerMap)`
`Navigation(router.navPathStack){}.navDestination(routerMap)`
4、通过 `router.push("name",new Object())` 进行路由跳转,第一个参数是待跳转组件,第二个参数为传递数据
5、通过 `then` 接受下个页面回传过来的数据
6、提供了导航组件 `NavBar({ title: "首页" })`
```
struct RootPage {
@State message: string = 'Hello World';
build() {
Navigation(router.navPathStack) {
NavBar({ title: "首页" })
Text(this.message).onClick(() => {
router.push("name",new Object()).then((o:object)=>{
// o 为下个页面传回的数据
})
})
}.navDestination(routerMap)
}
}
```
7、待跳转的组件 `NamePage`,返回上个页面 `router.back(new Object())` 参数是传到上个页面的参数
```
@Builder
export function NameBuilder(o: object) {
NavDestination() {
NamePage({o:o}) // 待跳转的组件,o为传递数据 可以不传
}.hideTitleBar(true) // 隐藏默认导航
}
router.requestBuilder("name", wrapBuilder(NameBuilder)) // 注册组件到路由容器中
@Component
export struct NamePage {
/// 接收数据
o: object | undefined
build() {
Text("返回")
.onClick(() => {
router.back(new Object())
})
}
}
```
注意:router 跳转 需要注册组件
```
@Builder
export function NameBuilder(o: object) {
NavDestination() {
NamePage() // 待跳转的组件
}.hideTitleBar(true) // 隐藏默认导航
}
router.requestBuilder("name", wrapBuilder(NameBuilder)) // 注册组件到路由容器中
```
#### 插件明细
hello 各位同学,大家好! 今天我们来讲讲关于鸿蒙里常用的global全局属性。在开发的过程中通常会需要获取屏幕的宽度、高度、横竖屏、应用相关信息、打包相关信息等与app开发相关的信息
一、屏幕信息Display[详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5#displaygetdisplaybyidsync12)
1、屏幕的宽高
```arkts
// 屏幕相关信息
let dis = display.getDefaultDisplaySync()
// 屏幕宽度
this.width = px2vp(dis.width)
// 屏幕高度
this.height = px2vp(dis.height)
```
2、刘海屏幕、挖空屏上下占据的高度
```arkts
// 屏幕顶部占据的高度
let top = this.main.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height
// 屏幕底部占据的高度
let bottom = this.main.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect.height
// px转换vp
top = px2vp(top)
bottom = px2vp(bottom)
```
3、屏幕内容宽高以及导航栏选择栏的高度
```arkts
// 屏幕宽度
let contextWidth = width
// 屏幕高度
let contextHeight = height - bottom - top
// 导航栏高度
let navBarHeight = top + 44;
// 选择栏高度
let tabBarHeight = bottom + 49 + 10;
// 内容高度
let contentHeight = height - navBarHeight - tabBarHeight
// 内容加导航栏高度
let contentNavBar = height - tabBarHeight
// 内容加导航栏高度
let contentTabBar = height - navBarHeight
```
二、应用相关信息[详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-applicationinfo-V5)
```arkts
// 应用相关信息
let appInfo = bundleManager.getBundleInfoForSelfSync(flags).appInfo
// 应用包名
appInfo.name
// 应用名称
appInfo.label
// 应用环境
appInfo.appProvisionType
// 打包环境
appInfo.releaseType
// tokenId
appInfo.accessTokenId
```
三、打包相关信息[详细文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-bundleinfo-V5)
```arkts
// 打包信息
bundleInfo = bundleManager.getBundleInfoForSelfSync(flags)
// 版本号
bundleInfo.versionName
// 签名信息
bundleInfo.signatureInfo
// 安装时间
bundleInfo.installTime
// 作者
bundleInfo.vendor
```
注意:完整代码我已提交到[鸿蒙三方库](https://ohpm.openharmony.cn/#/cn/home)中,使用一下命令安装
```
ohpm install @free/global
```
调用方式
```arkts
// 屏幕相关信息等...
global.top
global.bottom
global.width
global.height
global.getNavBarHeight()
global.getTabBarHeight()
global.getContentHeight()
global.getContentNavBar()
global.getContentTabBar()
// 应用相关信息等...
global.appInfo
global.appName
global.bundleName
global.env
global.releaseType
global.release
global.debug
global.tokenId
// 打包相关信息...
global.bundleInfo
global.bundleInfo.signatureInfo
global.bundleInfo.installTime
global.bundleInfo.vendor
global.bundleInfo.name
```
喜欢本篇内容的话给个小爱心!
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)