HarmonyOS 上架审核材料实战:权限、隐私、截图与测试账号一次准备清楚

📅 2026/7/31 20:45:36
HarmonyOS 上架审核材料实战:权限、隐私、截图与测试账号一次准备清楚
HarmonyOS 上架审核材料实战权限、隐私、截图与测试账号一次准备清楚很多应用不是代码不能运行而是提交上架时材料对不上权限声明说需要定位但截图里看不到定位功能隐私政策写了收集手机号应用里还有第三方登录测试账号进不去核心页面审核人员按说明走到空白页。最后结果就是反复被退回开发团队临时补截图、改说明、重新打包。这篇文章从工程角度整理一套上架材料准备方法功能清单、权限矩阵、隐私证据、截图素材、测试账号和回归记录要互相对应。它不替代平台实时规则但能帮助项目在提交前把常见返工点提前处理掉。1. 审核材料要和真实功能一致上架审核材料最核心的问题是“一致性”。代码、配置、截图、隐私政策、测试说明必须能互相证明。材料容易出错应该提前确认功能说明写了功能但版本里没有只写当前包可访问功能权限说明权限用途模糊与具体页面和按钮对应隐私政策字段和实际采集不一致与数据目录同步截图素材空白页、测试数据、尺寸不统一覆盖核心路径测试账号登录失败或权限不足能进入审核需要页面审核不是看一份漂亮文案而是看应用实际行为和材料是否对得上。2. 资料边界和准备范围上架前应优先核对官方文档和开发者后台的当前要求。资料用途华为开发者文档中心https://developer.huawei.com/consumer/cn/doc/查询应用开发、测试、发布和审核相关入口HarmonyOS 指南https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/查权限、隐私、应用模型、调试等工程说明AppGallery Connect 后台查看实际提交项、分类、截图和隐私填写要求项目发版记录确认本次包内有哪些新增功能和权限变化本文用结构化方式准备材料具体字段仍要以提交当天开发者后台页面为准因为平台规则和入口可能调整。3. FeatureManifest 先列功能路径功能清单不是产品介绍而是审核人员可以复现的路径。typeFeatureRisknormal|permission|login|payment|privacy;interfaceFeatureManifestItem{featureId:string;name:string;entryPath:string;needLogin:boolean;risk:FeatureRisk;screenshotName:string;}constreleaseFeatures:FeatureManifestItem[][{featureId:nearby_store,name:附近门店,entryPath:首页 工具 附近门店,needLogin:false,risk:permission,screenshotName:nearby_store_location.png,},];这份清单可以让测试、截图和权限说明围绕同一批功能展开。它防止材料写了旧版本功能或者漏掉新增页面。4. 权限矩阵要能解释每一项声明如果module.json5声明了权限上架材料里就要能说清楚使用场景。interfacePermissionMatrixRow{permission:string;relatedFeatureId:string;triggerPath:string;userBenefit:string;fallbackAvailable:boolean;}constpermissionMatrix:PermissionMatrixRow[][{permission:ohos.permission.LOCATION,relatedFeatureId:nearby_store,triggerPath:点击“查看附近门店”后触发,userBenefit:展示距离用户更近的服务门店,fallbackAvailable:true,},];权限矩阵连接代码声明、功能页面和用户价值。它避免出现“声明了权限但材料只写系统需要”的空泛说明。5. 隐私证据要和字段目录对应隐私政策不是最后复制一份文本。它应和应用实际采集字段对应。interfacePrivacyEvidenceItem{field:string;collectScene:string;policySection:string;userVisible:boolean;retentionDescription:string;}constprivacyEvidence:PrivacyEvidenceItem[][{field:phone,collectScene:用户绑定账号安全手机号,policySection:账号安全与身份验证,userVisible:true,retentionDescription:用户解绑或注销后按政策处理,},];这份证据能帮助团队检查隐私政策是否遗漏字段也能在审核询问时快速定位说明位置。6. 截图素材要覆盖关键路径截图不是随便截几张首页。它要覆盖核心功能、权限触发、登录后页面和异常兜底。interfaceReviewScreenshot{fileName:string;featureId:string;pagePath:string;state:normal|permission_prompt|empty|error;remark:string;}constscreenshots:ReviewScreenshot[][{fileName:nearby_store_location.png,featureId:nearby_store,pagePath:首页 工具 附近门店,state:permission_prompt,remark:展示定位权限触发前的业务说明,},];这段结构可以直接作为截图任务清单。截图前要确认页面数据不为空、文案没有测试占位、状态栏和底部导航不遮挡主体内容。7. 测试账号不能只验证能登录测试账号应能进入审核需要验证的功能不能登录后权限不足或数据为空。interfaceReviewAccount{username:string;passwordHint:string;role:string;accessibleFeatures:string[];resetBeforeSubmit:boolean;}constreviewAccount:ReviewAccount{username:test_user_001,passwordHint:提交后台填写实际密码,role:normal_user,accessibleFeatures:[nearby_store,profile_edit,message_center],resetBeforeSubmit:true,};不要在文章或公开材料里暴露真实密码。提交后台需要填写时再按平台要求提供。工程侧重点是确保账号状态干净、功能可访问、不会被风控锁定。8. ReviewPackage 把材料合成一个发版对象上架材料最好有一个统一对象避免各自维护。interfaceReviewPackage{versionName:string;buildNo:string;features:FeatureManifestItem[];permissions:PermissionMatrixRow[];privacy:PrivacyEvidenceItem[];screenshots:ReviewScreenshot[];account:ReviewAccount;}constpackageForReview:ReviewPackage{versionName:1.3.0,buildNo:130,features:releaseFeatures,permissions:permissionMatrix,privacy:privacyEvidence,screenshots,account:reviewAccount,};这个对象不是要直接提交给平台而是帮助团队检查材料之间是否能互相引用。比如权限矩阵里的featureId必须能在功能清单和截图清单里找到。9. 提交前做一致性校验材料一致性可以先用脚本思路检查。interfaceReviewCheckResult{passed:boolean;problems:string[];}functioncheckReviewPackage(pkg:ReviewPackage):ReviewCheckResult{constfeatureIdsnewSet(pkg.features.map((item)item.featureId));constproblems:string[][];pkg.permissions.forEach((item){if(!featureIds.has(item.relatedFeatureId)){problems.push(权限缺少对应功能:${item.permission});}});pkg.screenshots.forEach((item){if(!featureIds.has(item.featureId)){problems.push(截图缺少对应功能:${item.fileName});}});return{passed:problems.length0,problems,};}这类校验能提前发现“截图属于旧功能”“权限找不到说明”“隐私字段没有对应政策段落”等问题。人工检查仍然需要但脚本可以先挡掉低级错误。10. 审核前回归动作上架前回归不是只安装启动一次。至少要覆盖安装、登录、权限、核心功能、异常兜底。场景操作预期结果首次安装清空旧版本后安装能正常进入首页测试账号登录使用提交账号登录可访问需要审核的页面权限功能点击触发权限的功能说明、弹窗、拒绝兜底都正常隐私入口打开隐私政策和设置链接可访问内容无空白弱网异常模拟接口失败页面有提示不出现白屏这些回归结果建议跟版本号一起保存。审核被退回时可以快速判断是材料问题还是包内功能问题。11. 常见上架材料问题排查表现象优先检查修复建议权限用途被质疑权限矩阵是否缺场景补充触发路径和用户收益截图和功能不一致截图是否来自旧包用当前构建重新截图测试账号进不去账号权限或数据状态重置账号并走完整路径隐私政策被要求修改字段和政策是否不一致用数据目录逐项核对审核发现空白页弱网或初始化失败补异常兜底和截图前验证排查顺序建议从版本号开始。很多材料问题本质是“当前包”和“提交材料”不是同一版。12. 提交前材料验收记录interfaceReviewReleaseCheck{versionMatched:boolean;permissionExplained:boolean;privacyLinked:boolean;screenshotsCurrent:boolean;accountVerified:boolean;}constfinalReviewCheck:ReviewReleaseCheck{versionMatched:true,permissionExplained:true,privacyLinked:true,screenshotsCurrent:true,accountVerified:true,};这份记录应该由开发、测试和发布负责人共同确认。它能减少“提交前才发现材料不一致”的返工。上架材料专项证据包审核问题要能一次回答上架审核失败很多时候不是功能有问题而是材料说不清权限截图不对应、隐私说明缺字段、测试账号进不去、审核路径太长。提交前应准备一份材料证据包。材料需要说明权限截图在哪个功能触发隐私说明字段、目的、保存方式测试账号可登录、可复现关键路径审核备注入口步骤和注意事项interfaceReviewMaterialEvidence{permissionScreenshots:numberprivacyFieldsReady:booleantestAccountUsable:booleanreviewPath:string[]}functionassertReviewMaterial(e:ReviewMaterialEvidence):void{if(e.permissionScreenshots0)thrownewError(缺少权限场景截图)if(!e.testAccountUsable)thrownewError(测试账号不可用)if(e.reviewPath.length2)thrownewError(审核路径说明过短)}这段代码表达的是提交前自查规则帮助团队把审核材料从口头说明变成可复用清单。审核材料复现场景给读者一组可执行核验审核材料最怕入口说不清。补充这组核验后读者可以按功能入口逐个准备截图、账号、备注和隐私说明。核验维度读者需要准备的证据输入页面入口、用户动作、关键参数过程日志、状态变化、异常分支输出UI 表现、回调结果、持久化结果回归同场景重复执行后的结果interfaceReviewReplayCase{entryPath:anyscreenshotName:anytestAccount:anyreviewNote:any}constreplay63:ReviewReplayCase{entryPath:sample,screenshotName:sample,testAccount:sample,reviewNote:sample,}functionassertReplay63(item:ReviewReplayCase):void{if(item.reviewNote.length12)thrownewError(审核备注不足以复现路径)}这组核验面向审核准备能帮助读者把截图、账号和审核备注串成一条可复现路径。13. 小结上架审核是工程闭环的一部分HarmonyOS 应用上架材料不是发布当天的文档工作而是从功能开发时就应该同步维护的工程闭环。功能清单说明当前包有什么权限矩阵解释为什么要权限隐私证据说明数据怎么处理截图和测试账号让审核人员能复现。材料越早结构化提交时越少临时返工。