自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 收藏
  • 关注

原创 58同城首页腰部动态化技术选型(布局动态化)

58同城首页腰部动态化技术选型(布局动态化),包含对 RN、H5、小程序、插件化、布局动态化的详细分析

2022-12-08 17:34:36 1528 1

原创 MetaX组件化框架

MetaX 是 58无线 Android 团队开发的一套增强版的组件化框架,它制定了一系列的标准和规范,来解决现有组件化工程测试成本高、api 无法保证向下兼容、差异化定制与重构成本高、无法感知变动细节、业务线编译调试耦合平台环境等问题。对于这些标准和规范,MetaX 框架提供了一套全自动化的脚本工具保障它们可以正常稳定地运转。...

2022-05-27 20:46:25 1791

原创 58同城Android端-最小插件化框架实战和原理分析

最小插件化框架在58同城 Android 端的落地,把阿里认证动态化,收益达到 4M。本文中从0-1讲述了插件化的核心概念、需要解决的问题、58App 最小插件化实现。对插件化感兴趣的同学,这一篇不容错过:

2022-05-24 12:42:46 1592 3

原创 彻底的组件化方案-58同城Android端

彻底的组件化方案调研:编译速度慢、业务线无法独立开发、调试、耦合严重,多平台组件复用难度大、重构、替换实现成本高、测试范围边界难以界定、需求需要改动多模块、厂商包、极速包改造难度大、业务组件间通信只能异步 (walle)

2022-02-09 18:06:36 1509

原创 珊瑚海 - 一站式跨端动态化布局框架原理

珊瑚海是安居客发起,58无线团队参与共建的一站式动态布局框架,支持 Android、iOS、小程序、H5. 包含引擎框架、DSL 管理后台、可拖拽低代码前端、JS 开发框架等全套基础能力。适用于 UI 交互、动画复杂性较低、布局动态要求高的页面。

2022-01-06 14:30:50 4250 2

原创 珊瑚海-一站式动态化布局框架

珊瑚海是安居客发起,58无线团队参与共建的一站式动态布局框架,支持 Android、iOS、小程序、H5. 包含引擎框架、DSL 管理后台、可拖拽低代码前端、JS 开发框架等全套基础能力。适用于 UI 交互、动画复杂性较低、布局动态要求高的页面。

2021-11-25 10:01:19 1751

原创 Tunable-在App工程中开发调试独立SDK工程(gradle复合构建)

Tunable, 基于 gradle 复合构建 + 依赖替换,实现开发大型 Android 项目开发时,快速、无侵入地进行独立 SDK 源码调试,可用于 SDK 开发、bug 定位等。https://github.com/kuangzhongwen/Tunable

2021-11-03 18:05:21 645

原创 gradle复合构建

1.复合构建介绍Gradle 3.3(不是 gradle 插件) 开始支持复合构建。复合构建是包含其他构建的构建。复合构建类似于 gradle 多项目构建,不同之处在于不包括单个项目,而是包括完整的构建。多项目构建和复合构建非常相似,可以从两种构建方式关注点上区分的:多项目构建关注点是:如何组织多个项目,项目之间往往是存在业务逻辑联系的。比如一个商城项目包含了前台部分和后台管理部分,那可以分成两个子项目来做(fun-shop/front 和 fun-shop/admin)复合构建关注点是:如何

2021-11-03 18:01:55 1125

原创 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 755 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 447 2

原创 端侧 AI 介绍

1. 端侧 AI 介绍 AI 技术的两大分支:云侧,端侧1.1 云侧从终端采集和感知到的信息,包括声音、视频、图像等数据都通过网络传输到云中心侧进行后续处理。云侧的资源高度集中,存储和计算能力超群,并且具有很高的通用性但是随着 AIoT(人工智能物联网)设备和数据的指数级爆发式增长,云侧的集中式计算模型慢慢暴露出了一些不足,像信息处理的实时性,网络条件制约,数据安全性这三大缺陷开始显现。常用框架:Caffe,Theano,MXNet,Torch1.2 端侧端侧也就是我们常说的边缘

2021-09-13 15:15:44 6692

原创 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 14386

原创 WubaRN hermes调研-基于混合工程的改造方案

WubaRN-hermes调研 Target React Native version: v0.64.0-rc.2 为推广 0.64 版本,基于 WubaRN 0.64.0-rc.2 框架版本,调研 hermes。WubaRN 0.64.x 改造过程见:WubaRN升级RN到0.64.x内容Hermes介绍改造过程Hermes介绍Facebook 在 ChainReact2019 大会上正式推出了新一代 JavaScript 执行引擎 HermesHerm...

2021-07-22 11:24:49 496 2

原创 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 541

原创 客户端布局动态化方案

1.背景 2.目标 3.现有的轮子 4.设计方案1.背景

2021-06-08 16:28:48 1999 6

原创 【Qigsaw系列03】Qigsaw如何加载插件

目录:1. 插件化加载简介 2. Qigsaw 加载 class、libs 3. Qigsaw 加载资源1. 插件化加载简介插件化技术最初源于免安装运行 APK 的想法,这个免安装的 APK 可以理解为插件。支持插件化的 APP 可以在运行时加载和运行插件,这样便可以将 APP 中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现 APP 功能的动态扩展。想要实现插件化,主要是解决下面三个问题:插件中代码的加载和与主工程的互相调用。 插件中资源的加载和与主工程.

2021-05-18 14:55:42 860 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 1155 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 1192 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 802

原创 【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 5763 1

原创 【VirtualAPP 双开系列07】第三方 APP Service、Provider 加载分析

目录:1. Service 加载分析 2. Provider 加载分析1.Service 加载分析2. Provider加载分析

2021-04-25 11:45:07 326 1

原创 【VirtualAPP 双开系列06】启动加载第三方 APP 过程

目录:1.VirtualApp 如何启动第三方 App *使用占位 Activity 启动 * 栈的管理2.VirtualApp 如何加载第三方 App1. VirtualApp 如何启动第三方 App整体流程:使用占位 Activity 启动VirtualApp 采用的是通过占位的方式,因为双开应用并没有真实的安装在系统上,所以需要采用占位的方式,系统启动的是 StubActivity,在TransactionHandlerProxy 进行替换...

2021-04-19 15:00:49 1302 2

原创 【VirtualAPP 双开系列05】安装卸载 APP 过程

目录:1. 安装 2. 卸载1. 安装先看看整体交互流程:最后看下 server 进程中的详细安装流程:2. 卸载卸载过程就非常简单了:

2021-04-14 17:04:45 464 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 347

原创 【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 682

原创 【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 2045 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 1165

原创 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 2819

原创 58同城 Android 客户端新工程能力宣讲(Android APP Bundle、线上AB测、网络库)

2021-03-11 15:50:04 209 1

原创 58同城 Android 客户端升级 ReactNative 到 0.64.x 调研

Target React Native version: v0.64.0-rc.2WubaRN 版本已经两年没有升级了,现在已经更新很多新的工具,业务上期望能够支持。目标1:能提供升级 WubaRN SDK 到 0.64.x 版本,并提供 58同城测试包 目标2:评估内部业务迁移成本内容WubaRNSDK 测试bundle 58App 迁移成本WubaRNSDK1. build react native由于 WubaRNSDK 是对 React Native 做的..

2021-03-11 15:29:37 1302 4

原创 任意门 | 基于 Wafers 的版本业务静默更新能力

目录:适用范围 背景 方案调研 设计思路 任意门10.6.5招聘首次上线基础数据 任意门动态更新平台1. 适用范围线上 AB 测,紧急需求上线,bug 修复等2. 背景目前线上 AB 测只能跟某个具体的 App 版本,无法在线上包上提前验证效果 小版本、紧急需求、bug 修复只能通过发版实现3. 方案调研插件化:稳定性差:大量 hook framework, 反射私有 API 打包侵入大,维护成本高 无法控制影响范围,需要走集成测试RN/Flu...

2020-11-27 11:06:00 486 2

原创 分享篇 - 58同城基于Android APP Bundle开发的全新编译模式(编译速度提升70%)

58 同城 App 基于 Android APP Bundle 开发的全新编译模式 (编译速度提升 70%), 绝对的精品好文。

2020-09-14 20:03:49 2626 3

原创 音视频篇 - Android 平台的音视频渲染

本文章是阅读《音视频开发进阶指南基于android与ios平台的实践》一书的学习笔记。第四章:移动平台下的音视频渲染。

2020-08-21 10:38:38 1143

原创 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 4312 2

原创 音视频篇 - FFmpeg 的介绍和使用

本文章是阅读《音视频开发进阶指南基于android与ios平台的实践》一书的学习笔记。第三章:FFMpeg 的介绍和使用。

2020-05-28 14:34:34 2604

原创 音视频篇 - 移动端环境搭建

本文章是阅读《音视频开发进阶指南基于android与ios平台的实践》一书的学习笔记。第二章:移动端环境搭建。

2020-05-26 10:13:38 606

原创 音视频篇 - 音视频基础概念

本文章是阅读《音视频开发进阶指南基于android与ios平台的实践》一书的学习笔记。第一章:音视频基础概念。

2020-05-21 12:21:41 625

原创 分享篇 - 基于 Android 图解 ReactNative 原理

图解 ReactNative 原理,深度好文。

2020-05-09 19:29:45 1191

原创 分享篇 -《App架构师实践指南》阅读总结

本文章主要是对《App架构师实践指南》一书的阅读总结,作为自己阅读结果的提炼。

2020-05-06 19:30:37 1400

原创 分享篇 - Qigsaw (基于 Android App Bundle 动态化⽅案探索) 插件实现分析

Qigsaw 可以让我们在国内使用 Android App Bundle,并且可以无缝切换到 Google Play.

2020-04-20 15:47:08 2053

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除