Android打开离线小程序在uni-app中有几率会白屏

Android打开离线小程序在uni-app中有几率会白屏

操作步骤:

  • 首次下载App->打开首页金刚位【数据库】(下载离线wgt)->下载完成打开小程序偶尔白屏

预期结果:

  • 能够正常打开小程序

实际结果:

  • 小程序有几率白屏

bug描述:

Android首次打开离线小程序wgt有几率会白屏,再次点击就正常了。

出现白屏的时候会打印下面的Log:

2025-07-24 11:42:04.335 25237-25237 weex                    com.jin10                            E  idle from create instance cache size is 0  
2025-07-24 11:42:04.339 25237-25365 weex                    com.jin10                            E  end getBundleType type:Vue time:0  
2025-07-24 11:42:04.344 25237-25365 timeline                com.jin10                            E  createInstance :1753328524344  
2025-07-24 11:42:04.376 25237-25365 WeexCore                com.jin10                            E  IPCFutexPageQueue.cpp:116,IPCException IPCFutexPageQueue:: start futex wait  
2025-07-24 11:42:04.386 25237-25365 WeexCore                com.jin10                            E  IPCFutexPageQueue.cpp:116,IPCException IPCFutexPageQueue:: start futex wait  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 00352790(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 003525f0(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 00327244(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 003d1d3c(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 003d1378(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 003d0b54(unknown symbol)  
2025-07-24 11:42:04.636 25870-25888 JSE                     pid-25870                            E  /data/app/com.jin10-8zZEafOOxJH6A3jUN7pA4Q==/lib/arm64/libweexjss.so + 004ebc6c(unknown symbol)  
2025-07-24 11:42:04.637 25237-25857 WeexCore                com.jin10                            E  IPCException server original owner has die  
2025-07-24 11:42:04.637 25237-25857 WeexCore                com.jin10                            E  IPCFutexPageQueue.cpp:66,do munmap  
2025-07-24 11:42:14.338 25237-25237 Html5Plus-SplashClosed  com.jin10                            E  1753328534337  
2025-07-24 11:42:14.338 25237-25237 Main_Path               com.jin10                            E  closeSplashScreen0 appid=__UNI__26EA1D0;true;closeSplashDid=false

更多关于Android打开离线小程序在uni-app中有几率会白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于Android打开离线小程序在uni-app中有几率会白屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的离线包加载时序问题。从日志分析,白屏的主要原因是首次加载wgt资源时,Weex引擎初始化与页面渲染之间的竞争条件导致的。

关键日志点:

  1. idle from create instance cache size is 0 - 实例缓存为空,需要重新创建
  2. IPCException IPCFutexPageQueue:: start futex wait - 进程间通信等待超时
  3. IPCException server original owner has die - 服务端进程异常终止

解决方案:

  1. 添加加载状态检测 在打开离线小程序前,检查wgt包是否完全加载就绪:
plus.runtime.isWgtReady(appid, (ready) => {
  if (ready) {
    // 打开小程序逻辑
  } else {
    // 延迟重试或显示加载中
  }
});
  1. 实现重试机制 捕获白屏异常后自动重试:
let retryCount = 0;
const openWgt = () => {
  plus.runtime.openWgt(appid, (res) => {
    if (res.code !== 0 && retryCount < 3) {
      retryCount++;
      setTimeout(openWgt, 500);
    }
  });
};
  1. 预加载优化 在下载完成后先预初始化wgt环境:
// 下载完成后立即预加载
plus.runtime.preloadWgt(appid, () => {
  console.log('wgt预加载完成');
});
  1. 资源验证 确保wgt包完整性,在打开前验证主要资源文件:
plus.io.resolveLocalFileSystemURL(wgtPath, () => {
  // 资源可用,继续打开
}, () => {
  // 资源损坏,重新下载
});
回到顶部