
分享篇
文章平均质量分 78
Tony-老师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MetaX组件化框架
MetaX 是 58无线 Android 团队开发的一套增强版的组件化框架,它制定了一系列的标准和规范,来解决现有组件化工程测试成本高、api 无法保证向下兼容、差异化定制与重构成本高、无法感知变动细节、业务线编译调试耦合平台环境等问题。对于这些标准和规范,MetaX 框架提供了一套全自动化的脚本工具保障它们可以正常稳定地运转。...原创 2022-05-27 20:46:25 · 2465 阅读 · 0 评论 -
彻底的组件化方案-58同城Android端
彻底的组件化方案调研:编译速度慢、业务线无法独立开发、调试、耦合严重,多平台组件复用难度大、重构、替换实现成本高、测试范围边界难以界定、需求需要改动多模块、厂商包、极速包改造难度大、业务组件间通信只能异步 (walle)原创 2022-02-09 18:06:36 · 1759 阅读 · 0 评论 -
珊瑚海 - 一站式跨端动态化布局框架原理
珊瑚海是安居客发起,58无线团队参与共建的一站式动态布局框架,支持 Android、iOS、小程序、H5. 包含引擎框架、DSL 管理后台、可拖拽低代码前端、JS 开发框架等全套基础能力。适用于 UI 交互、动画复杂性较低、布局动态要求高的页面。原创 2022-01-06 14:30:50 · 5023 阅读 · 2 评论 -
珊瑚海-一站式动态化布局框架
珊瑚海是安居客发起,58无线团队参与共建的一站式动态布局框架,支持 Android、iOS、小程序、H5. 包含引擎框架、DSL 管理后台、可拖拽低代码前端、JS 开发框架等全套基础能力。适用于 UI 交互、动画复杂性较低、布局动态要求高的页面。原创 2021-11-25 10:01:19 · 1918 阅读 · 0 评论 -
Tunable-在App工程中开发调试独立SDK工程(gradle复合构建)
Tunable, 基于 gradle 复合构建 + 依赖替换,实现开发大型 Android 项目开发时,快速、无侵入地进行独立 SDK 源码调试,可用于 SDK 开发、bug 定位等。https://github.com/kuangzhongwen/Tunable原创 2021-11-03 18:05:21 · 852 阅读 · 0 评论 -
gradle复合构建
1.复合构建介绍Gradle 3.3(不是 gradle 插件) 开始支持复合构建。复合构建是包含其他构建的构建。复合构建类似于 gradle 多项目构建,不同之处在于不包括单个项目,而是包括完整的构建。多项目构建和复合构建非常相似,可以从两种构建方式关注点上区分的:多项目构建关注点是:如何组织多个项目,项目之间往往是存在业务逻辑联系的。比如一个商城项目包含了前台部分和后台管理部分,那可以分成两个子项目来做(fun-shop/front 和 fun-shop/admin)复合构建关注点是:如何原创 2021-11-03 18:01:55 · 1736 阅读 · 0 评论 -
58本地版64位包RN页面大概率白屏卡死问题
1.问题描述本地版支持64位应用包供主流应用商城要求上架,在测试过程中发现 RN 界面大概率出现白屏、卡死。2. 排查原因分析过程:#case1同城 64位包,切换到县域/找工作,无此问题2对比同城、本地版 64位包 RN 相关 so,md5 一致3经测试排除本地版自定义 RN 载体页原因4ReactNative 框架、JS 业务无明显错误日志排除以上原因,再看下业务 module 调用,使用命令行:adb logcat | grep ‘re原创 2021-10-26 16:30:32 · 921 阅读 · 2 评论 -
端侧AI-58同城Android部落帖子重排实现
1. 需求方案设计1.1 模型 AB Test、热更新、下载一级页加载首页数据时,算法后端服务器下发当前用户的模型 modelJson 数据:{ "scene" : 1, "modelUrl": "https://58cdn.com.cn/xxx/1/modelandConfig.zip", // tflite模型+对应的配置文件远程地址的地址 "version": "20210825cg422", // string, 模型版本号,同时是ab test 号 "md5"原创 2021-09-13 17:45:44 · 620 阅读 · 2 评论 -
端侧 AI 介绍
1. 端侧 AI 介绍 AI 技术的两大分支:云侧,端侧1.1 云侧从终端采集和感知到的信息,包括声音、视频、图像等数据都通过网络传输到云中心侧进行后续处理。云侧的资源高度集中,存储和计算能力超群,并且具有很高的通用性但是随着 AIoT(人工智能物联网)设备和数据的指数级爆发式增长,云侧的集中式计算模型慢慢暴露出了一些不足,像信息处理的实时性,网络条件制约,数据安全性这三大缺陷开始显现。常用框架:Caffe,Theano,MXNet,Torch1.2 端侧端侧也就是我们常说的边缘原创 2021-09-13 15:15:44 · 16373 阅读 · 0 评论 -
RN-UI随机异常引出的跨端框架问题排错成本
1. 问题记录短信召回需求当用户收到短信后,点击链接启动本地版 APP,外部调起 RN 招聘页面。QA 反馈问题在 vivo、华为等机器上,大概率出现 RN 页面崩溃,如下截图:排查过程(1) debug bundle 调试安装对应的本地版非发布包,打开 RN 调试页面,与 FE 进行联调,尝试复现。发现打开本地版 App 后未复现。(2) 怀疑 server 返回脏数据错误信息非常有限,即通过 jsbridge 交互后,native thread 渲染 ui 异常: ViewMan原创 2021-09-06 14:34:24 · 16796 阅读 · 0 评论 -
58同城Android Qigsaw升级-v1.4.1多ABI构建
58App Qigsaw升级-v1.4.1多ABI构建1.背景2.方案调研与设计3.升级过程1.背景Qigsaw 是 Wafers 动态化能力使用到的开源框架,承载着 58App、任意门、Mocha 的运行。小组于 2020/03 月份从 Qigsaw v1.3.2.2 fork 接入https://github.com/iqiyi/Qigsawv_1.3.2.2 版本只支持单 ABI 维度构建,随着国内越来越多应用商店需要上传64位 APK,对于 Qigsaw 支持 Base APK原创 2021-07-12 14:10:54 · 685 阅读 · 0 评论 -
客户端布局动态化方案
1.背景 2.目标 3.现有的轮子 4.设计方案1.背景原创 2021-06-08 16:28:48 · 2681 阅读 · 6 评论 -
【Qigsaw系列03】Qigsaw如何加载插件
目录:1. 插件化加载简介 2. Qigsaw 加载 class、libs 3. Qigsaw 加载资源1. 插件化加载简介插件化技术最初源于免安装运行 APK 的想法,这个免安装的 APK 可以理解为插件。支持插件化的 APP 可以在运行时加载和运行插件,这样便可以将 APP 中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现 APP 功能的动态扩展。想要实现插件化,主要是解决下面三个问题:插件中代码的加载和与主工程的互相调用。 插件中资源的加载和与主工程.原创 2021-05-18 14:55:42 · 1075 阅读 · 6 评论 -
【Qigsaw系列02】Qigsaw如何安装、更新插件
目录1. 插件安装过程 2. 插件更新过程1. 插件安装过程(1) 发起安装在哪个进程,就在哪个进程安装Qigsaw通过 AIDL 进行安装服务,从哪个进程发起,就在哪个进程安装SplitInstallManagerImpl: @Override public Task<Integer> startInstall(SplitInstallRequest request) { if (getInstalledModules().c..原创 2021-05-14 11:17:04 · 1324 阅读 · 9 评论 -
【Qigsaw系列01】Qigsaw编译插件做了哪些事
目录:1. Qigsaw 简介 2. Qigsaw-app-plugin 插件 3. Qigsaw-dyanmic-feature-plugin 插件1. Qigsaw 简介Qigsaw 是爱奇艺自主研发的动态化框架,其核心优势如下:利用 Android App Bundle 开发套件,极速开发体验。 支持 Android App Bundle 所有功能特性,"山寨" Play Core Library 公开接口实现,开发者阅读官方文档即可愉快开发。 任何进程均可动态加载插件,支.原创 2021-05-10 21:02:42 · 1427 阅读 · 2 评论 -
【VirtualAPP 双开系列09】Native Hook 管理多 APP data 目录
1. VirtualApp native hook 主要干了些什么?用于虚拟 APP 的文件访问重定向,我们来通过一张图理解下,还是以 58App 为例:如果允许多开就会可能出现文件访问冲突,同时也没有做到 APP 间隔离的目的。而 VirtualAPP 就是通过 Native Hook 技术重定向文件解决了该问题:2. 代码分析(1) VirtualAPP 启动第三方 App: VClientImpl#bindApplicationNoCheck() privat.原创 2021-04-30 11:50:15 · 1021 阅读 · 0 评论 -
【VirtualAPP 双开系列08】如何实现多开 - UID
目录:1. Android UID 介绍 2.多开基本原理 3. 常用的多开方案 4. VirtualAPP 如何实现多开1. Android UID 介绍Android 系统中修改了 Linux 的 UID 的含义。由于 Android 是单用户系统,不需要支持多用户登陆,因此传统的 UID 系统就失去了原来的意义。Android 的开发者巧妙地修改了 UID 的含义:每个 APP 对应一个 UID—用 UID 对应用程序进行管理。Android 中查看 UID 的方法:..原创 2021-04-29 15:50:14 · 8805 阅读 · 1 评论 -
【VirtualAPP 双开系列07】第三方 APP Service、Provider 加载分析
目录:1. Service 加载分析 2. Provider 加载分析1.Service 加载分析2. Provider加载分析原创 2021-04-25 11:45:07 · 464 阅读 · 1 评论 -
【VirtualAPP 双开系列06】启动加载第三方 APP 过程
目录:1.VirtualApp 如何启动第三方 App *使用占位 Activity 启动 * 栈的管理2.VirtualApp 如何加载第三方 App1. VirtualApp 如何启动第三方 App整体流程:使用占位 Activity 启动VirtualApp 采用的是通过占位的方式,因为双开应用并没有真实的安装在系统上,所以需要采用占位的方式,系统启动的是 StubActivity,在TransactionHandlerProxy 进行替换...原创 2021-04-19 15:00:49 · 1743 阅读 · 2 评论 -
【VirtualAPP 双开系列05】安装卸载 APP 过程
目录:1. 安装 2. 卸载1. 安装先看看整体交互流程:最后看下 server 进程中的详细安装流程:2. 卸载卸载过程就非常简单了:原创 2021-04-14 17:04:45 · 626 阅读 · 1 评论 -
【VirtualAPP 双开系列04】VirtualAPP 可扩展 AIDL 分析
目录:1. 什么是 AIDL? 2. 为什么要用 AIDL? 3. VirtualAPP AIDL 使用 4. IPC 总线(IPCBus)动态扩展 5. 总结1. 什么是 AIDL?AIDL: Android Interface Definition Language, 即 Android 接口定义语言。2. 为什么要用 AIDL?Android 中每个应用都是独立的进程,拥有自己的虚拟机,虚拟地址,应用之间的内存不止不能互相访问,存在应用隔离,因此两个应用..原创 2021-04-13 20:49:53 · 460 阅读 · 0 评论 -
【VirtualAPP 双开系列03】动态代理-hook系统服务(Java层)
目录:1. Hook 简述 2. ADocker Java Hook 类图 3.ADocker Java Hook实例 (ActivityManagerService)1. Hook 简述我们先来了解下 hook.(1) 什么是 HookHook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自身的代码与系统方法进行融入。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。(2) Hook 分类(3) Hook 框架大...原创 2021-04-08 15:14:01 · 866 阅读 · 0 评论 -
【VirtualAPP 双开系列02】进程管理
目录:1.运行 VirtualAPP,查看进程 2.VirtualAPP 分成四种类型的进程 3.关于 Stub 4.关于 ServiceManager1. 运行 VirtualAPP,查看进程adb shell;top;在 VirtualAPP 中打开百度 App, 可以看到如下输出:PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS ...原创 2021-04-07 14:55:42 · 2213 阅读 · 2 评论 -
【VirtualAPP 双开系列01】巧妙的反射框架
目录:1. 反射类型包装 2. 实例 3. 总结1. 反射类型包装2. 实例分析https://wos.58cdn.com.cn/IjGfEdCbIlr/ishare/video_XUU713V9XdWc37XUXU35U5d3VaV95ad1.mp4看看其反射相关输出:04-06 10:41:31.722 29160 29160 I kuang : load mappingClass: mirror.dalvik.system.VMRuntime ,rea...原创 2021-04-06 14:01:49 · 1531 阅读 · 1 评论 -
Mocha: 58同城 App 基于卡片的线上 AB 测(线上卡片动态换)
目录:1. 需求背景 2. 客户端设计 3. Server 端设计 4. demo 效果1. 背景基于卡片的线上 AB 测能力作为 58APP Android 端 Wafers 系列工作的一部分。在此项目之前,Wafers 已经在 58App 端完成以下工作:1. 提升本地编译速度 70%2. 减小包大小和动态化,实现业务提效,包括:招聘页面动态化,减少由于 DU 框架带来的 6M 包大小3. 推广包大小减少 30% 以上,实现渠道转换率提升 15%4. 业务模块动态化,实现.原创 2021-04-06 10:18:18 · 3425 阅读 · 0 评论 -
58同城 Android 客户端新工程能力宣讲(Android APP Bundle、线上AB测、网络库)
原创 2021-03-11 15:50:04 · 269 阅读 · 1 评论 -
任意门 | 基于 Wafers 的版本业务静默更新能力
目录:适用范围 背景 方案调研 设计思路 任意门10.6.5招聘首次上线基础数据 任意门动态更新平台1. 适用范围线上 AB 测,紧急需求上线,bug 修复等2. 背景目前线上 AB 测只能跟某个具体的 App 版本,无法在线上包上提前验证效果 小版本、紧急需求、bug 修复只能通过发版实现3. 方案调研插件化:稳定性差:大量 hook framework, 反射私有 API 打包侵入大,维护成本高 无法控制影响范围,需要走集成测试RN/Flu...原创 2020-11-27 11:06:00 · 1633 阅读 · 2 评论 -
Qigsaw 框架原理解析-如何在国内使用 Android App Bundle 的动态交付功能
目录Android App BundleQigsaw 简介编译期处理安装运行流程热修复1. Android App BundleAndroid App Bundle(AAB) 是一种改进的应用程序打包方式,能大幅度减少应用体积。简而言之,可以理解 Google 官方的动态发布方案。好处Size 更小安装更快支持动态发布限制仅限于通过 Google Play 发布的应用,(Google 进一步巩固自身生态)。需要加入到 Google 的 beta program enr原创 2020-07-27 15:17:33 · 5007 阅读 · 2 评论 -
分享篇 - 基于 Android 图解 ReactNative 原理
图解 ReactNative 原理,深度好文。原创 2020-05-09 19:29:45 · 1548 阅读 · 0 评论 -
分享篇 - 58同城基于Android APP Bundle开发的全新编译模式(编译速度提升70%)
58 同城 App 基于 Android APP Bundle 开发的全新编译模式 (编译速度提升 70%), 绝对的精品好文。原创 2020-09-14 20:03:49 · 2863 阅读 · 3 评论 -
分享篇 -《App架构师实践指南》阅读总结
本文章主要是对《App架构师实践指南》一书的阅读总结,作为自己阅读结果的提炼。原创 2020-05-06 19:30:37 · 1522 阅读 · 0 评论 -
分享篇 - Qigsaw (基于 Android App Bundle 动态化⽅案探索) 插件实现分析
Qigsaw 可以让我们在国内使用 Android App Bundle,并且可以无缝切换到 Google Play.原创 2020-04-20 15:47:08 · 2355 阅读 · 0 评论 -
分享篇 - RxJava wiki 官方文档 (中文易懂,精简整理)
本文是对 RXJava 官方文档的翻译,整理,一起从 0 到 1 走进 RXJava 的世界。原创 2020-03-12 19:16:18 · 1998 阅读 · 0 评论 -
分享篇 - Android 如何使用其他 APP 的 App ID 做微信分享
1. 需求背景58 系的APP 分享到微信,朋友圈经常被封。如果在微信分享时,我们将微信分享的 App ID 改成其他应用的 App ID,就可以使用其他 App的名义进行分享。以在 58 同城 App 中,使用 58 同镇站长 App 的AppID 进行分享为例,效果如图:2. 实现原理微信对第三方的调用有着严格的验证:App ID,...原创 2020-03-06 14:02:17 · 4232 阅读 · 5 评论 -
分享篇 - APP 启动任务调度器 LaunchTaskExecutor
后面的文章开始写 Android 相关的东西了,这边就先插入一个小节奏,分享一个我平时自己写的工具类。git 链接: https://github.com/kuangzhongwen/AndroidCommonLibs/tree/master/src/main/java/waterhole/commonlibs/asyn 目录:背景 代码实现 使用 1. 背景 ...原创 2019-02-15 21:10:33 · 670 阅读 · 0 评论