{ "module": { "name": "entry", "type": "entry", "description": "$string:module_desc", "mainElement": "EntryAbility", "deviceTypes": [ "phone", "tablet" ], "requestPermissions": [ { "name": "ohos.permission.INTERNET" }, { "name": "ohos.permission.GET_NETWORK_INFO" }, { // 🔴 质感握姿(左手/右手握持)—— 用户 2026-10-16 第 4 条。 // `multimodalAwareness.motion` 的 `holdingHandChanged` 要求此权限。 // ⚠️ 它是 `system_grant` + `availableLevel: normal` + `provisionEnable: false` // (在 SDK 的权限定义里核过)⇒ **安装即获得,不会弹授权框**。 // ⚠️ API 20 起才有;低版本设备会抛 801(能力不支持)—— // 代码里已 try/catch 兜住,拿不到就退回默认方向。 "name": "ohos.permission.DETECT_GESTURE" } ], "deliveryWithInstall": true, "installationFree": false, /* 🔴 v73(用户 2026-10-21「有地址的可以一键导航」): 这是 `bundleManager.canOpenLink()` 的**前置条件**,不是可选配置。 ⚠️ 没声明时 `canOpenLink` **不抛错、直接返回 false** ⇒ "手机上装了高德"和"我忘了声明"在运行期长得一模一样, 症状是"导航按钮点了只是复制了一下地点",极难归因。 ⚠️ 四个 scheme 必须与 `common/FbNav.ets` 的 `MAP_APPS[].probe` **一一对应**; 加一家地图要么两处一起加,要么两处一起没有。守卫 `_fb_arkts_guard.js` 钉了这条。 ⚠️ 只声明 scheme 名(`amapuri`),不带 `://`。 */ "querySchemes": [ "amapuri", "baidumap", "maps", "qqmap" ], "pages": "$profile:main_pages", "abilities": [ { "name": "EntryAbility", "srcEntry": "./ets/entryability/EntryAbility.ets", "description": "$string:EntryAbility_desc", // 🔴 v45 修:原为 `$media:layered_image`(分层图标),导致桌面图标 // 外面有一圈米色底、且图案显得小。原因: // · `background.png` 是**纯米色满幅图**(512²)⇒ 那圈底色; // · `foreground.png` 的图案**只占 44%**,系统还要留安全区 // ⇒ 图案被缩得更小。 // 另一个真 bug:`app.json5` 的分层图在 **AppScope** 下找, // 但 `background/foreground.png` **只在 entry 里**,AppScope 里没有 // ⇒ 引用落空。 // ⇒ 直接改用与应用内左上角**同一个** `fb_logo`(图案几乎铺满)。 "icon": "$media:fb_logo", "label": "$string:EntryAbility_label", "startWindowIcon": "$media:startIcon", "startWindowBackground": "$color:start_window_background", "exported": true, "orientation": "auto_rotation_restricted", "skills": [ { "entities": [ "entity.system.home" ], "actions": [ "ohos.want.action.home" ] } ] } ], "extensionAbilities": [ { "name": "EntryBackupAbility", "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets", "type": "backup", "exported": false, "metadata": [ { "name": "ohos.extension.backup", "resource": "$profile:backup_config" } ] }, // 🔴 v66(用户 2026-10-20「做几个和 syncCalendar 差不多的卡片」): // 桌面服务卡片。三种尺寸(2×2 / 2×4 / 4×4)都登记在 `form_config.json`, // 这里只声明**提供方**(FormExtensionAbility)。 // ⚠️ `type` 必须是 `form`,`metadata` 的名字必须是 `ohos.extension.form`, // 少一个桌面就把这个应用当成"没有卡片"。 { "name": "FbFormAbility", "srcEntry": "./ets/entryformability/FbFormAbility.ets", "description": "$string:form_ability_desc", "type": "form", "exported": true, "metadata": [ { "name": "ohos.extension.form", "resource": "$profile:form_config" } ] }, // 🔴 v83(用户 2026-10-23「要有定期同步的功能,家书app在后台也能自动同步」): // 延迟任务扩展。由 `common/FbBackgroundSync.ets` 用 `workScheduler.startWork` // 注册(周期 2 小时、`isPersisted` 重启自动恢复)。 // ⚠️ `name` 必须与 `FbBackgroundSync.ets` 里的 `WORK_ABILITY` **逐字相同**, // 否则 `startWork` 不报错、但**永远不会有回调**(系统找不到这个扩展)。 // ⚠️ `type` 必须是 `workScheduler`;`exported: false` —— 它只由系统拉起, // 不需要(也不应该)被别的应用调起。 { "name": "FbSyncWorkAbility", "srcEntry": "./ets/syncwork/FbSyncWorkAbility.ets", "type": "workScheduler", "exported": false } ] } }