xposed调试百度小程序的插件

起因 一直以来对小程序的架构和设计都比较感兴趣,因为各家都没有开源(据说百度小程序18年12月份全面开源),很多技术细节只能靠猜测,最多能看到小程序打包压缩文件,小程序是基于B/S架构的,在浏览器里面的DOM到底是咋样的呢?如果是自家程序的话,直接开始webView调试就好,基本上线上的程序都关闭了调试入口。怎么办呢,该我们无所不能的xposed出场了,接下来就该分析hook的入口了。 分析 百度小程序对应的Activity类是com.baidu.searchbox.ng.ai.apps.AiAppsActivity, 通过反编译源码,看到AiAppsActivity.onCreate()方法有这么一段代码: if (com.baidu.searchbox.ng.ai.apps.core.a.bzr()) { WebView.setWebContentsDebuggingEnabled(true); } 好眼熟的代码,这不就是开启inspect调试的方法吗?话不多说,直接用xposed hook这个方法跳过判断。 XposedHelpers.findAndHookMethod("com.baidu.searchbox.

阅读全文...

Vue学习文档

源码深入分析 Vue技术内幕 组件基础、组件注册 项目相关 Vue项目创建 其他分析文章 Vue.nextTick 的原理和用途

阅读全文...

JavaScriptCore基础知识介绍

简介 JavaScriptCore 是 JavaScript 引擎,通常会被叫做虚拟机,专门设计来解释和执行 JavaScript 代码。最开始的 JavaScriptCore 是从 KJS(KDE 的 JavaScript 引擎)以及 PCRE 正则表达式的基础上开发的,是基于抽象语法树的解释器。2008 年重写了,叫做 SquirrelFish,后来是 SquirrelFish Extreme,又叫 Nitro。目前 JavaScript 引擎还有 Google 的 V8 ,Mozilla 的 SpiderMonkey。 简单四则运算 const char *buffer = (env)->GetStringUTFChars(jsValue, 0); JSValueRef

阅读全文...

LiteApp源码分析

LiteApp 是爱奇艺开源的一个高性能跨平台的小程序框架,下面我从源码的角度分析下LiteApp的架构和原理 框架描述 下面是官方的描述的翻译~ LiteApp致力于使开发人员能够使用现代Web开发技术,通过单个代码库在Android和iOS上构建应用程序。 更具体地说,您可以使用javascript和现代前端框架Vue.js通过使用LiteApp开发移动应用程序,生产力和性能可以共存,您构建的应用程序将在网络上运行,性能接近本机。 我们通过将渲染引擎与语法层分离来实现这一点,请参阅下面的更多细节。 这是官方的架构图。可能看的并不是很明白。我简单的介绍下这个框架的工作流程吧。 基于VUE和liteapp-cli开发功能代码,并打包成bundle文件 WebView提前初始化,并加载qy.webview.js框架和打包后的bundle里css文件 bundle.js和qy.thread.js文件运行在独立的JS引擎(jsc), 生成virtual-dom并注入到WebView中,到此界面就显示出来了 qy.webview.js 和 qy.thread.js 是基于vue.js 框架修改而来,去掉了dom和bom相关操作 这种小程序框架的优势是核心的js代码和webView渲染可以异步执行,方便native和web通信 启动过程 我们从官方demo LiteAppListActivity类开始介绍,这个界面显示了本地已经存在的小程序列表,点击列表就打开了小程序。

阅读全文...

flutter系列-环境配置

本教程是基于MacOS-Android开发环境来进行配置的 下载sdk flutter-macos-v0.5.1-beta.zip 推荐使用迅雷下载 配置环境变量 下载完成后解压zip文件进入flutter文件夹,shell进入flutter目录,执行: export PATH=`pwd`/bin:$PATH 终端输入 flutter 能正常执行则配置环境变量成功 检测环境是否齐全 flutter doctor 会检测出来是否下载了Android SDK,Android Studio是否安装了Dart和Flutter插件。如果没有安装,请先从Android Studio插件中心安装Dart和Flutter插件。Configure Editor 创建Flutter项目 安装完插件,启动Android studio,有个选项start a Flutter project, 创建Flutter application, 输入应用名称等等参数,应用就创建完成了。 编译运行 连接模拟器或者真机,点击运行按钮就可以运行安装。按control + s

阅读全文...

VSCode插件开发

开发教程 VS Code 插件创建与发布 VS Code 插件项目结构与配置文件 VS Code 插件示例,一个 TypeScript 即时预览插件 开源插件 网页代码预览

阅读全文...

获取微信小程序源码

一、Android ROOT手机 一、ROOT的Androis手机可以在/data/data/com.tencent.mm/MicroMsg/<长串字符>/appbrand/pkg, 虽然看不到小程序名称或者appkey,但是可以根据文件改动时间大概猜测是哪个wxapkg文件。wxapkg的解压下面会介绍 二、抓包获取 通过抓包获取downloadURL, 直接下载即可。下载完成后是一个<长串字符串>文件,没有后缀。其实这个就是wxapkg, 可以直接改成xxxx.wxapkg就可以了。 解包 wxapkg 请下载unpack-wxapkg, 我是通过PHP解包的,据说还有python、JS版本, 请前往Github自寻。unpack-wxapkg.php 使用方法如下: php unpack-wxapkg.php xxxx.wxapkg 解包后生成xxx.wxapkg.unpacked 文件夹,里面就包含各种经过处理的源码了。

阅读全文...

Android P适配

Android P行为变更 官网介绍: Android P 行为变更 0x1 刘海屏适配 如果没有刘海屏手机,可以在Andrid P 手机或者模拟器开发者模式>simulate display with a cutout。 刘海屏的适配分为下面三种情况: 1.有状态栏的页面,系统自动适配,不会受到刘海屏的影响。 2.全屏未适配刘海屏的页面,系统会对刘海屏区域进行切割,让整体 UI 页面做下移处理,避开刘海屏的显示。 3.全屏已适配刘海屏的页面,可以兼容刘海屏,做到真正的全屏显示。 这是一个没有适配的例子,闪屏页面整体向下了,并没有全屏。 # 适配方案 WindowManager.LayoutParams lp =getWindow().getAttributes(); lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_

阅读全文...

Pixel线刷Android P

下载刷机包 获取 Android P 推荐用迅雷下载,速度杠杠的! 目前只支持Pixel,Pixel XL, Pixel 2, Pixel 2XL 手机设置 前往「设置-关于手机-版本号」,猛击版本号 7 次开启「开发者选项」。 在开发者选项中开启「OEM 解锁」 # 手机会立即重启至 Bootloader 模式 adb reboot bootloader # 手机进入 Bootloader 解锁界面,使用音量键 +/- 来控制光标,选择「Yes」并按下电源键来进行 Bootloader 解锁 fastboot oem unlock 解压刷机包sailfish-xxxx.zip, 执行flash-all.sh等待刷机完成 参考文档 从 Bootloader

阅读全文...