WankkoRee / WebViewPP

Enable WebView debugging and add vConsole in it. Support WebView, TBS X5, UC U4, Crosswalk(XWalk), XWeb. 启用 WebView 调试并添加 vConsole,支持 WebView、TBS X5、UC U4、Crosswalk(XWalk)、XWeb。
539 stars 71 forks source link

微信小程序能支持远程调试吗? #7

Closed strange-qwq closed 1 year ago

strange-qwq commented 2 years ago

微信版本:8.0.22

WankkoRee commented 2 years ago

可以。

strange-qwq commented 2 years ago

b401b69a9c4e695ececa5f8efe79f19 云端只有这两个配置,vconsole是注入进来了的,但chrome://inspect页面没有任何显示,请问如何配置呢

WankkoRee commented 2 years ago

inspect 默认使用 adb 进行探测设备,请确保设备已通过有线或无线连接到电脑 adb。

strange-qwq commented 2 years ago

inspect 默认使用 adb 进行探测设备,请确保设备已通过有线或无线连接到电脑 adb。

image image

手机已经连接上了

WankkoRee commented 2 years ago

请前往 v2.0.0 下载测试包进行功能性测试。

strange-qwq commented 2 years ago

请前往 v2.0.0 下载测试包进行功能性测试。

你是说用cn.wankkoree.test.tbsx5-1.0_1-release测试一次吗

WankkoRee commented 2 years ago

都可以,只是测试一下远程调试功能,建议 webview 。

strange-qwq commented 2 years ago

都可以,只是测试一下远程调试功能,建议 webview 。

似乎用cn.wankkoree.test.webview-1.0_1-release测试也不行,直接vconsole都没了,在APP内右上角打开debug并重启后才在chrome://inspect页面中显示出来(以下截图为安装并配置云端hook后重启应用截取) 907641e1faf7a817b44ee7cbe0b1a60 bff15b5dd3865c6b452d1a93ff96de0 image

WankkoRee commented 2 years ago

模块未正常工作,请提供 xposed 中的模块日志。

strange-qwq commented 2 years ago

模块未正常工作,请提供 xposed 中的模块日志。

是这个吧 XD https://1456158721.lanzouh.com/ihNKA04ww2gh

WankkoRee commented 2 years ago

经检查:

  1. 日志中未发现测试 app 相关日志,推测为未在LSPosed中勾选测试 app。
  2. 日志中发现微信相关日志,主要问题为 未找到 hook 点。
WankkoRee commented 2 years ago

经检查是云端规则库收录错误,已更正,请重新拉取云端规则。

strange-qwq commented 2 years ago

经检查:

  1. 日志中未发现测试 app 相关日志,推测为未在LSPosed中勾选测试 app。
  2. 日志中发现微信相关日志,主要问题为 未找到 hook 点,请提供一下你手机上提取的微信安装包。

1、不好意思忘了勾,勾了后chrome://inspect页面识别到了; 2、微信是酷安更新的;

WankkoRee commented 2 years ago

嗯,微信那个不是你的问题,已经修复了,重新拉取规则即可。

strange-qwq commented 2 years ago

嗯,微信那个不是你的问题,已经修复了,重新拉取规则即可。

我重新拉取并重启微信了,但现在chrome://inspect里面还是没有我打开的小程序 image db2342072dc694a5f571bbbcc8f6496

WankkoRee commented 2 years ago

请提供一份干净的日志:

  1. 清空日志
  2. 结束微信进程
  3. 打开微信
  4. 打开网页
  5. 保存日志
strange-qwq commented 2 years ago

请提供一份干净的日志:

  1. 清空日志
  2. 结束微信进程
  3. 打开微信
  4. 打开网页
  5. 保存日志

新的日志:https://1456158721.lanzouh.com/iphfu04x34za

WankkoRee commented 2 years ago

日志中未发现相关问题,推测模块正常工作。

请安装模块的dev版本,以获取更详细的日志。

strange-qwq commented 2 years ago

日志中未发现相关问题,推测模块正常工作。

请安装模块的dev版本,以获取更详细的日志。

https://1456158721.lanzouh.com/iqMSS04x6q3i

WankkoRee commented 2 years ago

经分析可能是由于微信采用了多渲染引擎造成的,我的测试机调用了XWeb混合渲染引擎中的XWalk子渲染引擎,所以我认为只需要完成对XWalk的相关 Hook 即可,但你的设备中运行的微信可能并不是采用XWalk子渲染引擎,所以造成功能未生效。

我会尽快完成对微信XWeb渲染引擎中所有子渲染引擎的适配,请等待。

strange-qwq commented 2 years ago

经分析可能是由于微信采用了多渲染引擎造成的,我的测试机调用了XWeb混合渲染引擎中的XWalk子渲染引擎,所以我认为只需要完成对XWalk的相关 Hook 即可,但你的设备中运行的微信可能并不是采用XWalk子渲染引擎,所以造成功能未生效。

我会尽快完成对微信XWeb渲染引擎中所有子渲染引擎的适配,请等待。

好的,麻烦了;

另外,我也是一名安卓的初学者,会一定的前端代码,现在我想做一个Android套壳APP来学习,前端用的是基于vue3的vite框架,但苦于Android端的系统自带的webview版本太低不兼容新的js语法,百度又只看到x5内核这种解决方案,所以目前我是网上下了一个新版的Android webview来装到系统上临时解决的,我想问问大佬有无其它的解决方案?在哪里能了解到比如你说“XWeb”、“XWalk”等渲染引擎的知识呢?

WankkoRee commented 2 years ago

常见渲染引擎:


所以综上,相对其他几个渲染引擎的那么多毛病来说,腾讯的这个基本上算是唯一选择了。

strange-qwq commented 2 years ago

常见渲染引擎:

* 腾讯`TBS X5`:[接入文档](https://x5.tencent.com/docs/access.html),接入方便,用户基数特别多,接入开发者多,并且比较轻量,当前`Chromium`内核版本大概在`89`左右,应该能满足大部分前端新特性。

* 阿里`UC U4`:[接入文档](https://www.alibabacloud.com/help/zh/mobile-platform-as-a-service/latest/add-uc-sdk),接入不太方便,需要安装相关IDE插件并且申请和 app 绑定的 key,api 文档几乎找不到,用户基数挺多(毕竟阿里系都在用),接入开发者基本上没有,全是阿里自家以及几个国字号 app 在用,兼容性不太好,可能会因为系统版本、CPU架构等原因退化为系统渲染引擎,当前`Chromium`内核版本大概在`69`左右,一部分前端新特性应该是用不上了,而且打包出来的包挺大的,如果目标是轻量级 app 的话慎选。

* 英特尔`CrossWalk`:又叫`XWalk`,几年前停止维护了,用户基数挺多(主要是微信用户太多了),接入开发者几乎没有,国内基本上就微信在用它的魔改版本,但是并没有对原版进行维护,所以原版几乎是不可用的状态(Android 10 以上闪退),当前`Chromium`内核版本大概在`53`左右,挺多前端新特性都用不了,并且打包出来的包也挺大的,不建议接入。

* 微信`XWeb`:由`XWalk`、`TBS X5`、`Pinus`(这个不了解)、系统渲染引擎组合而成,根据系统具体情况选用渲染引擎,但是似乎是个私有项目,并没有找到相关的接入文档,所以大概没戏。

所以综上,相对其他几个渲染引擎的那么多毛病来说,腾讯的这个基本上算是唯一选择了。

那国外大厂呢

WankkoRee commented 2 years ago

国外因为谷歌商店能正常访问且基本上都是手机默认应用商店的原因,系统渲染引擎是能正常更新的,所以绝大多数都是直接调用了系统渲染引擎,并没有国内这种迫不得已的变通方案。

strange-qwq commented 2 years ago

国外因为谷歌商店能正常访问且基本上都是手机默认应用商店的原因,系统渲染引擎是能正常更新的,所以绝大多数都是直接调用了系统渲染引擎,并没有国内这种迫不得已的变通方案。

草,我就说怎么Google搜不到

strange-qwq commented 2 years ago

更新了2.1.0APP后重新配置了hook规则,但似乎chrome://inspect里面还是无法调试小程序 XD image image

WankkoRee commented 2 years ago

添加一条“hookXWebView”规则,规则参数默认,保存规则后重启微信,查看弹出的toast消息提示使用的内核是哪个。

Screenshot_20220620101655.png

WankkoRee commented 2 years ago

hookXWebView规则在高版本微信上不可用,请更新v2.1.1版本以修复规则(需重新保存一遍这条规则)。

另外,原先采用toast形式汇报内核情况的方案不再可用,改为输出到日志,请在日志中查询Current XWeb Engine is字样来查看内核情况。

strange-qwq commented 2 years ago

LSPosed-Bridge: [EnableWebViewDebugging][I]--> Current XWeb Engine is XWalk + Pinus

是这个吧

WankkoRee commented 2 years ago

是的,Pinus暂时不知道是个啥,正常情况下是单内核XWalk的,我有空会去看看Pinus的内容。

所以你设备上模块无法在微信内工作是正常情况。

strange-qwq commented 2 years ago

是的,Pinus暂时不知道是个啥,正常情况下是单内核XWalk的,我有空会去看看Pinus的内容。

所以你设备上模块无法在微信内工作是正常情况。

会不会是这玩意:http://pinus.io/zh-cn/

WankkoRee commented 2 years ago

不是这个,你的这个Pinus是服务器端的东西。

猜测可能是微信内部的一个代号,不是公开项目。

strange-qwq commented 2 years ago

不是这个,你的这个Pinus是服务器端的东西。

猜测可能是微信内部的一个代号,不是公开项目。

好吧,大佬加油,我再用模拟器试试

WankkoRee commented 2 years ago

针对Pinus内核,可尝试添加如下两条规则(不确定是否可用,因为我这边没有设备能够触发这个内核):

{
  "hookWebView": [
    {
      "name": "Pinus 远程调试 测试规则",
      "Class_WebView": "com.tencent.xweb.pinus.sdk.WebView",
      "Method_getSettings": "getSettings",
      "Method_setWebContentsDebuggingEnabled": "setWebContentsDebuggingEnabled",
      "Method_setJavaScriptEnabled": null,
      "Method_loadUrl": "loadUrl",
      "Method_setWebViewClient": "setWebViewClient"
    }
  ],
  "hookWebViewClient": [
    {
      "name": "Pinus 注入JS 测试规则",
      "Class_WebView": "com.tencent.xweb.pinus.sdk.WebView",
      "Class_WebViewClient": "com.tencent.xweb.pinus.sdk.WebViewClient",
      "Method_onPageFinished": "onPageFinished",
      "Method_evaluateJavascript": "evaluateJavascript",
      "Class_ValueCallback": "android.webkit.ValueCallback"
    }
  ]
}

你测试一下这两条的效果,然后反馈给我,谢谢了(虽然规则有效的希望比较小)。

strange-qwq commented 2 years ago

你测试一下这两条的效果,然后反馈给我,谢谢了(虽然规则有效的希望比较小)。

你试试安卓12的模拟器能触发这个内核不,而且,加上这俩规则还是不行 XD image image

strange-qwq commented 2 years ago

另外,我现在只是远程调试出不来,vconsole看起来是正常注入了的

WankkoRee commented 2 years ago

之前vConsole就可以吗?还是加上刚才的规则才可以?

strange-qwq commented 2 years ago

之前vConsole就可以吗?还是加上刚才的规则才可以?

之前就可以,不过网络显示不出来

WankkoRee commented 2 years ago

vConsole的网络捕获功能本身就限制比较多,需要非跨域的XHR请求才可以被捕获,相当于浏览器的开发者工具中的网络工具的阉割版本。

另,A12的模拟器是指Google的Android Virtual Device吗?如果是的话请告知具体的底包版本,如Android 12.0(S) - Intel x86 Atom_64 System Image

strange-qwq commented 2 years ago

另,A12的模拟器是指Google的Android Virtual Device吗?如果是的话请告知具体的底包版本,如Android 12.0(S) - Intel x86 Atom_64 System Image

额,具体的我也没试过,因为我设备是Android 12的小米MIX4,所以我猜这个内核是微信为了兼容安卓12弄的,你如果有Android 12设备/模拟器的话也可以试试

WankkoRee commented 2 years ago

好的,感谢告知,不过我这边A12的MIUI并没有触发这个内核,稍后我会试试另一台A12设备。

hmoytx commented 2 years ago

同样的问题 能注进vconsole,但是chrome中无法调试

strange-qwq commented 2 years ago

好的,感谢告知,不过我这边A12的MIUI并没有触发这个内核,稍后我会试试另一台A12设备。

更新了最新版的模块,但inspect页面好像还是读不出来,vconsole和另一个调试工具倒是出来了

image

52fb9f6ab0e6f6ba672cf9f391625ca

d73d57052da457d0745ee3bbcbd68d0

WankkoRee commented 2 years ago

我这边8.0.28的内核直接默认开启了远程调试,甚至都不需要模块。

现在微信的机制比较迷。

strange-qwq commented 2 years ago

我这边8.0.28的内核直接默认开启了远程调试,甚至都不需要模块。

你默认开启是不是因为这个 http://debugxweb.qq.com/?inspector=true

image

WankkoRee commented 2 years ago

可能是的,类似的链接我确实在几个月前访问过。

周末我尝试关闭我这边官方提供的远程调试功能,去测试模块规则是否有问题。

strange-qwq commented 2 years ago

我访问后 inspect 能读出来了,还有些奇怪的页面

image

WankkoRee commented 1 year ago

因为微信的魔改 WebView 是前后端分离的,所以小程序大概率会显示至少两个页面。然后小程序的页面布局逻辑好像是不同页面不同WebView,所以你多操作一下应该会有更多的页面出来。(咕

WankkoRee commented 1 year ago

较新版本的微信基本上都已适配。