服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS 真机调试微信小程序

iOS 真机调试微信小程序

2021-05-10 13:33三水清 IOS

下面介绍下如何使用 Xcode、Reveal 和 Safari 来真机调试 iOS 上的小程序。感兴趣的朋友跟随脚本之家小编一起看看吧

平时开发小程序可以在开发者工具中进行调试,开发者工具提供了类似 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

延伸 · 阅读

精彩推荐
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04