1. 环境信息
- 开发系统:Windows 11
- HBuilderX:5.34.2026102909
- 项目:uni-app、Vue 3、TypeScript
- 设备:华为 NEO-AL00,Android 10 / API 29
- WebView:com.huawei.webview 114.0.5.302,已启用
- DCloud AppID:
__UNI__71B2A4E - 正式包名:
com.maggie_10.petprogram - 故障 APK:
0.2.2-r2.2 / versionCode 206 - APK SHA256:
fcf63b7f82dc0f59a403149f10e8c9678e3a857620f7731ac3600c8e5ec2aff4 - 推送配置:UniPush 2.0,包含 Android 厂商离线推送
2. 问题现象
使用 HBuilderX 5.34 编译并生成正式签名 Android APK,安装及签名验证均通过。
此前在设备上启动该发行包时:
- 原生启动 Activity 正常。
- 底部 TabBar 可以显示。
- 记录、我的等 Vue 页面正文为空白。
- App 主进程及
:jse进程均存在。 - 已有 logcat 未发现可直接定位原因的 JS 异常堆栈。
最初怀疑编译器与原生 SDK 版本不一致,但改用与原生壳对应的 HBuilderX 5.34 编译器重新构建后,页面仍然空白。
目前设备已安装另一个 SDK1 构建版本 0.2.4/206,该版本的页面可以显示。
3. 已完成的排查
3.1 APK 资源检查
- 存在 app-service、app-config-service、uni-app-view 等资源。
- 存在记录、我的、登录、会员等页面入口。
- 检查到 60 个页面注册。
- 对比 176 项业务资源,175 项与对应构建输出逐字节一致;剩余差异为 manifest 打包加工。
目前没有发现明确的页面资源缺失。
3.2 隔离调试环境对照
在此隔离环境中进行了两项测试:
测试 A:当前源码编译
使用 HBuilderX 5.34 编译对应开发资源,记录、我的、会员及登录页面均可显示,会员页面能够完成挂载和 onReady。
测试 B:封存发行资源
- 记录页能够显示,DOM 读取约 288 个节点。
- 我的页能够显示,DOM 读取约 81 个节点。
- 会员页能够显示,DOM 读取约 101 个节点。
- 对应页面的
#app存在子节点。
上述结果说明,封存的业务 JS 资源能够在现有隔离调试环境中渲染。
3.3 原生环境检查
设备 WebView 已启用,App 及 JSE 进程存在。
与当前可正常显示的 SDK1 APK 进行比较,发现原生构建和部分资源存在差异,但尚未得到能够直接解释空白的异常或调用堆栈。
4. 新版隔离调试基座构建受阻
为取得与正式包相同的 HBuilderX 5.34 原生环境,尝试使用独立包名:
使用公共测试签名证书,并准备复用正式包所需的原生模块。
提交制作自定义调试基座时,HBuilderX 提示:
Android包名和DCloud UniPush插件绑定的不一致,请确认!
由于当前 UniPush 2.0 已绑定正式应用包名,隔离包名无法直接复用该配置。
后续尝试了隔离变体的相关配置,但没有成功生成新的 5.34 调试基座。
所有尝试均未改变正式应用的 UniPush 配置、正式包名和原有签名信息。
需要特别说明:UniPush 包名错误能够解释新版隔离基座打包受阻,但目前没有证据证明它导致正式 R2 APK 页面空白。
5. 希望协助确认的问题
问题一:如何制作可并存的隔离调试基座?
在保留正式应用 UniPush 2.0 包名、签名和离线推送绑定不变的情况下,是否有官方支持的方法,使用不同 Android 包名制作与正式包原生模块一致的 HBuilderX 5.34 自定义调试基座?
是否需要另外创建测试 DCloud AppID,并为测试包名独立配置 UniPush?
如果本次只需要排查 Vue 页面渲染,是否有官方推荐的临时调试模块配置方式,既不影响正式推送绑定,又能明确区分缺失 Push 模块可能带来的启动影响?
问题二:如何取得最早的 JS 异常?
针对正式签名 APK 原生 TabBar 正常、Vue 正文空白、:jse 进程存在但 logcat 没有明确 JS 异常的情况:
- HBuilderX 5.34 是否提供针对 JS 逻辑层启动异常的推荐日志采集方式?
- 是否可以在匹配的调试基座中开启异常暂停,捕获
app-service初始化、Vue mount 或createInstanceContext的最早错误? - 如果问题仅在正式发行包出现,是否有官方推荐的发行态诊断方式?
问题三:如何进一步区分原生环境与业务初始化问题?
当前相同发行 JS 资源在旧调试基座能够渲染,但正式发行包曾出现空白。
希望确认下一步优先检查哪些信息,例如:
- 原生 SDK 与启动资源加载路径;
- WebView/JSE 初始化状态;
- 发行包和调试基座的运行差异;
- 应用内部资源及缓存选择;
- 页面组件生命周期与实际视图创建状态。
如需进一步排查,烦请说明最有价值的日志类型、采集方法及必要的最小复现材料。
6. 当前状态
目前没有确认正式发行包页面空白的根因。
已保留故障 APK、签名及资源核对证据、隔离调试结果、页面截图和脱敏日志。
未卸载正式应用、未清理数据,也没有通过连续生成新正式包尝试修复。
希望先确定官方支持的隔离调试方法及异常采集方式,再根据实际错误定位问题。
感谢协助!
1 个回复
Ask小助手 - Ask社区AI助手
针对您提出的三个问题,基于知识库中的相关信息,回复如下:
问题一:如何制作可并存的隔离调试基座?
知识库中提到,Android 平台支持通过离线 SDK 打包生成自定义调试基座,具体方法可参考 Android 平台离线生成自定义调试基座(uni-app)。
关于自定义基座的运行方式,HBuilderX 4.71+(仅 Android)支持选择"自定义基座-已安装基座",并选择对应调试的包名。如果基座已通过 Android Studio 的运行安装到手机中,可以在设备选择窗口选择已安装基座进行调试。详见 使用自定义基座运行。
关于 UniPush 包名绑定不一致的问题,知识库中提到一个注意事项:使用 HBuilderX 2.7.14 以下版本,如果同一插件且同一 appid 下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在 HBuilderX 项目中 manifest.json -> "App 原生插件配置" -> "云端插件"列表中删除该插件重新选择。但您使用的是 5.34 版本,此注意事项可能不完全适用。
关于是否需要另外创建测试 DCloud AppID 并为测试包名独立配置 UniPush,以及在保留正式应用 UniPush 2.0 绑定不变的情况下使用不同包名制作基座的官方支持方法,知识库中暂未找到明确的依据。
关于临时调试模块配置方式,知识库中提到:部分 manifest 配置,如三方 sdk 配置,需要打包后生效的,可以打包一个自定义运行基座。打包自定义基座后运行这个自定义基座,同样可以真机运行和 debug。打包正式包将无法真机运行和 debug。详见 App 平台调试指南。
问题二:如何取得最早的 JS 异常?
知识库中提到以下调试相关信息:
App 端提供真机运行的 console.log 日志输出,运行到真机或模拟器时,不用点 debug 按钮,运行手机 App,会在 HBuilderX 的控制台直接输出日志。
uni-app 的 App 端的 webkit remote debug,只能调试视图层,不能调试逻辑层。因为 uni-app 的 js 不是运行在 webview 里,而是独立的 jscore 里。
打包自定义基座后运行这个自定义基座,同样可以真机运行和 debug。打包正式包将无法真机运行和 debug。
详见 App 平台调试指南。
在 issue 系统中,有一个类似的白屏案例提到了错误日志格式:
reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property 'call' of undefined。这说明在 logcat 中搜索reportJSException或createInstanceContext相关关键字可能有助于定位 JS 逻辑层启动异常。详见 安卓 app 本地自定义基座启动闪退。关于 HBuilderX 5.34 是否提供针对 JS 逻辑层启动异常的推荐日志采集方式、是否可以在匹配的调试基座中开启异常暂停以捕获 app-service 初始化、Vue mount 或 createInstanceContext 的最早错误,以及发行态诊断方式,知识库中暂未找到明确的依据。
问题三:如何进一步区分原生环境与业务初始化问题?
知识库中提到,运行启动流程包括:编译、安装基座到手机、同步应用代码和资源到基座、启动基座并运行应用。其中:
详见 真机运行常见问题。
在 ask 社区中,有一个类似案例 【报Bug】uniapp 项目打正式包后增加的新页面白屏,该用户在华为手机上复现了白屏问题,logcat 中出现了
TypeError: r[t] is not a function at view.umd.min.js:1和Cannot read property 'addVData' of undefined at view.umd.min.js:1的错误,最终原因是项目里面 wgt 包更新的问题。此案例仅供参考,不能直接断定与您的问题原因相同。关于原生 SDK 与启动资源加载路径、WebView/JSE 初始化状态、发行包和调试基座的运行差异、应用内部资源及缓存选择、页面组件生命周期与实际视图创建状态等具体排查方向,以及最有价值的日志类型和采集方法,知识库中暂未找到明确的依据。
建议您将故障 APK、签名及资源核对证据、隔离调试结果、页面截图和脱敏日志等信息整理后,前往 ask 社区 提交问题,以便官方人员进行深入排查。
要回复问题请先登录或注册
公告
更多>相关问题