iOS 真机调试微信小程序

时间:2022-11-01 20:55:30

平时开发小程序可以在开发者工具中进行调试,开发者工具提供了类似 chrome devtools 的调试面板,对于前端开发者来说入门门槛比较低。

小程序开发完成之后,我们需要在真机上进行测试,真机调试方面小程序开发者工具有预览、远程调试和设置体验版本三大部分功能。除了这三种方式之外,我们还可以使用真机远程调试,在 ios 上可以通过实现 safari 调试代码,安卓中可以安装 x5 内核的 inspect 版本,开启 chrome remote debug 模式。使用真机调试不仅可以发现开发者工具中不能发现的 bug,还能帮助我们理解小程序的运行原理。

下面介绍下如何使用 xcode、reveal 和 safari 来真机调试 ios 上的小程序。

先大概说下原理,首先下载砸过壳版本的微信 ipa 文件(ios app 程序的后缀),然后使用 ipapatch 对 ipa 进行重新签名,签名账号可以使用自己的 apple 账号,最后将项目编译到真机(也可以模拟器),就可以使用 safari 进行调试了。

  1. 下载 ipapatch 项目
  2. 使用 pp 助手下载砸过壳版本的微信 ipa(使用最新版本的微信,否则登录会提示需要升级),这个需要安装 pp 助手,下载后在下载目录找到其 ipa
  3. 将微信的 ipa 文件命名为 app.ipa,替换掉 ipapatch 目录的 assets/app.ipa 文件
  4. 使用 xcode 打开 ipapatch 项目
  5. 修改签名到自己的开发者账号,没有开发者账号可以用自己的 apple 账号登录

iOS 真机调试微信小程序

按照上面的提示,首先修改 bundleid(这里的填写可以比较随意),然后使用自己的 apple id 登录账号,再选择自己的真机(数据线连接后可以选择),选择后点击开始编译,编译结束会安装到自己的 iphone 手机,安装成功后就会发现自己的手机有两个微信了。

接着再完成下面的步骤,就可以调试小程序了。

  1. 在 iphone 上信任自己的开发者描述文件:「设置 -> 通用 -> 描述文件 -> 信任你的证书」
  2. 在 iphone 上打开 safari 调试功能:「设置 -> safari -> 高级 -> web 检查器打开」

首先登录微信账号,打开需要调试的小程序,打开后在 mac 电脑上打开「safari -> 开发」找到自己的 iphone 手机,选择对应的页面就可以进行调试了。

iOS 真机调试微信小程序

这里说明下:

  • jscontext:是小程序的逻辑层代码,执行在 javascriptcore 环境中
  • page-frame.html:是小程序的视图层代码,执行在普通的 wkwebview 中
  • 上图只开了一个小程序页面却显示了两个 page-frame.html,说明始终有一个页面在后台加载,准备打开小程序的其他页面

调试 jscontext

打开 jscontext 之后,找到的第一个 js 文件实际就是微信的逻辑层代码执行 waservice.js 了:

另外看到一些 jsbridge.subscribehandle 的代码实际是 native 实现的一些方法或事件,然后调用 jscontext 中的方法回传数据的。下面是点击事件的一个截图,会看到点击事件传递的数据。

iOS 真机调试微信小程序

调试 page-frame.html

page-frame 的页面是普通的 webview 容器,可以在 safari 中直接 debug,下面我打开了自己正在开发的项目,通过 console 面板修改 #canvas-wrapper 节点的内容:

iOS 真机调试微信小程序

修改后,在手机上看到效果:

iOS 真机调试微信小程序

这说明实际 webview 内是可以进行 dom 操作的,而且也可以使用普通的 bom 对象,如 alert、location等。

iOS 真机调试微信小程序

使用 reveal 查看 ui 布局

如果要研究微信小程序的布局,可以使用 reveal 软件来查看 ui 布局。如下图所示,在今日头条的小程序布局中,可以看到播放器组件是 native 实现的组件,而我们做的新鲜天气小程序的雨雪效果 canvas 也是 native 实现的。

iOS 真机调试微信小程序

iOS 真机调试微信小程序

要开启 reveal,需要经过下面的步骤:

  1. 安装 reveal,然后通过菜单「help -> show reveal library in finder -> ios library」,打开 revealserver.framework 所在目录
  2. 将 revealserver.framework 复制到 ipapatch 的 assets/frameworks/ 内

上面两个步骤如果都正确,再次用 xcode 打开 ipapatch 编译运行,打开小程序后,会在 reveal 中看到可以操作了。

iOS 真机调试微信小程序

这时候点击 icon 就可以随意查看 ui 布局了。

广告时间

最近由于小程序·云开发的推出,我发现使用云开发,可以大大降低小程序的开发门槛,以前很多灵光乍现的点子,往往因为缺乏后端知识或者缺少后端服务器没有得到实现,现在使用小程序云开发提供的接口完全可以实现。

于是我自己用云开发的 api 实现了一个「新鲜天气」的小程序,并将我在开发中的过程以及比较好的经验,整理成了一本电子书,放在了腾讯云学院上《从0到1实现天气查询小程序》。

这份实战课程以打造一款拥有天气预报和签到功能的小程序为主线,从基础知识到小程序运行机制,从开发环境搭建到小程序开发、调试、上线,打通微信小程序开发全流程,让新手可以从零开始完成并上线一个小程序。主要有以下三部分组成:

  • 小程序开发基础知识:微信小程序、小程序云的开发基础知识,最小程序的运行机制
  • 实战开发「新鲜天气」小程序:小程序开发坏境搭建、新鲜天气小程序简介、天气预报页面布局开发,页面数据交互
  • 优化到上线:从多个方面介绍小程序优化的知识点,并且完成小程序的上线

iOS 真机调试微信小程序

当然,这份实战课程收取一部分费用,不过价格比较便宜,希望能够对想学习或者正在进行小程序开发的你有所帮助。

原文链接:https://cloud.tencent.com/developer/article/1197201