- 页面接入Skyline后,部分安卓wx.getPerformance没有appLaunch性能节点?
背景: 在优化页面启动性能时,把某一个独立分包里的一个页面的渲染引擎切换成了 Skyline,目前该页面的安卓性能数据存在丢失的情况。 问题: 经排查,大致范围确定是使用 wx.getPerformance 获取性能数据进行上报时,在 entryType 为 navigation 时,appLaunch 节点没有被触发。(测试时,机型:REDMI,操作系统:Android 11,微信版本:8.0.54,基础库版本:3.6.6 2024.11.24 21:13:21) 页面 page.json: { "renderer": "skyline", // 切换为 webview 后可正常上报 "componentFramework": "glass-easel", "disableScroll": true, "navigationStyle": "custom", "backgroundColor": "#F9F9F9", "backgroundTextStyle": "light", "usingComponents": { "v-price": "../../components/price", "v-loading": "../../components/dkn_loading", "v-collapse": "../../components/collapse", "v-register": "../../components/register", "privacy-contract":"../../components/privacy_contract", "card-gift": "../../components/card_gift", "card-coupon": "../../../commonPackage/checkout_card_coupon" }, "componentPlaceholder": { "v-collapse": "view", "v-register": "view", "privacy-contract": "view", "card-gift": "view", "card-coupon": "view" }, "initialRenderingCache": "static", "rendererOptions": { "skyline": { "defaultDisplayBlock": true, "defaultContentBox": true, "disableABTest": true, "iosVersionBegin": "8.0.34", "iosVersionEnd": "15.255.255", "androidVersionBegin": "8.0.33", "androidVersionEnd": "15.255.255" } }, "trackingTitle": "确认订单", "trackingType": "Checkout" } 性能上报相关逻辑(appLaunch 节点不会执行到): const performanceObserverHandler = entryList => { const entries = entryList.getEntries(); entries.forEach(entry => { const { duration, entryType, name, path, navigationType, startTime, packageName } = entry; switch (entryType) { case 'navigation': if (name === 'appLaunch') { // 获取 duration - (这里不会被执行到) const app_launch_time = duration; // 上报 app_launch_time // report({ xxx }) } else { if (name === 'route') { // const route_time = duration; } } break; case 'render': if (name === 'firstRender') { // const first_render_time = duration; // report({ xxx }) } break; case 'script': // let invoke_scripts_time = (invoke_scripts_time || 0) + duration; // report({ xxx }) break; } }); }; const enablePerformanceMonitoring = () => { try { const performance = wx.getPerformance(); const observer = performance.createObserver(performanceObserverHandler); observer.observe({ entryTypes: ['render', 'script', 'navigation', 'loadPackage'] }); } catch (e) { console.log('doesnt support performance monitoring'); } }; 其他相关信息: 1、因为机型、微信版本、基础库版本等变量过多,不能完全确定是哪一项的问题,目前已测试的情况如下: [图片] 2、微信开发者工具测试时可以正常触发 appLaunch 性能节点,但是上传开发版本后用安卓真机(机型:REDMI,操作系统:Android 11,微信版本:8.0.54,基础库版本:3.6.6 2024.11.24 21:13:21)来测试时无法触发 appLaunch 这个性能节点。 3、当把 page.json 的里 render 从 skyline 切换为 webview 后,用手头的安卓真机(机型:REDMI,操作系统:Android 11,微信版本:8.0.54,基础库版本:3.6.6 2024.11.24 21:13:21)来测试时可以正常触发 appLaunch 性能节点。 4、iOS 没有经过多台设备来测试,但是从性能数据的上报情况来看,和以往的数据上报量差不多。手头的 iOS 设备测试时均能正常上报。
11-26 - 安卓微信版本 8.0.51,基础库版本3.6.2,调用 wx.requestPayment 无反应?
问题:安卓微信版本 8.0.51,基础库版本3.6.2,调用 wx.requestPayment 无法唤起微信支付。iOS 一切正常,把 page.json 里的 renderer 换成 webview 后可以正常唤起微信支付。
10-18 - 独立分包在使用分包异步时为什么依然下载并执行了主包的逻辑?
背景:业务上对几个页面进行了独立分包,把相关的依赖全部独立了,导致独立分包体积稍大了一些。希望通过分包异步化的方式把一些在复制到本地的三方库如 lodash 等库独立出去,减小独立分包的包体积。 问题:目前在开发者工具和微信扫小程序开发码测试下来,发现主包的生命周期还是执行了,那说明主包肯定也已经下载下来了,那么之前独立分包的优势就不在了。在官方文档里没有看到类似的解答, 是本身是这样的设定还是说是 bug。 require.async('../../../third-libs/libs/lodash.min.js').then(module => { console.log('====== module: ', module) }).catch(({ mod, errMsg }) => { console.error(`Failed to load lodash. Path: ${mod}, Error: ${errMsg}`); } // 这段代码是在独立分包的页面里使用的,当使用后就会触发主包的生命周期的执行。去除后就不会了。 寻求帮助:对于包里的一些三方库,有什么更合适的优化方案吗? });
07-29