
插件化
文章平均质量分 95
Loong.xu
青春的诀别是不是意味着年迈的将近;其实,青春,她一直都在继续.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android拆分与加载Dex的多种方案对比
对于Android大型程序来说,64k方法数与线性内存的限制都是必须要考虑的问题。对于它们的原理与分析,可参考下面这篇文章:http://ingramchen.io/blog/2014/09/prevention-of-android-dex-64k-method-size-limit.html。同时Android官方也推出了自己的解决方案,但却不能满足所有应用的需求。事实上,解决64K方法限制的唯一方法是拆分多dex,不同方案的差异在于需指定哪些类必须在主dex,这与我们期待的效果以及加载方式相关。解决翻译 2020-07-07 17:12:45 · 1222 阅读 · 0 评论 -
Android Dex分包原理、方案和加解密
the_q系列:1、ant方式进行dex分包《Android Dex分包》2、Android Dex分包—Gradle方式3、android Dex文件的加载Android Studio中Dex分包方案Android app dex加密原理AndroidStudio中,如何使用 MultiDex (apk中生成多个dex、dex分包)...原创 2020-07-05 13:29:32 · 511 阅读 · 0 评论 -
Android打包apk原理与流程
Android Dex分包一、Ant原始命令行打包流程。首先总结一下apk打包的一个大致流程,方便后边大家理解。大致分为三步,每一步中又包含了一些详细的操作步骤:打包生成.dex文件。 打包生成resouse.zip文件。 生成.apk文件并签名。1.打包生成.dex文件。我们如果想要生成.dex文件,必须通过工具将一些资源与java代码生成.class文件,其中包含一些资源文件、所有java代码文件、aidl文件等。首先需要在环境变量中配置好我们将要用到的工具,包括...翻译 2020-06-19 16:16:20 · 1324 阅读 · 0 评论 -
Java虚拟机四:类加载机制
虚拟机把描述Class文件加载到内存,并对数据进行校检、转换解析、初始化,最终形成可以被虚拟机使用的Java类型,将这个过程称之为类的加载机制。一、类的加载过程类从被加载到内存开始,会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、和卸载(Unloadin...翻译 2020-03-12 14:21:35 · 401 阅读 · 0 评论 -
Android 黑科技保活实现原理揭秘
一直以来,App 进程保活都是各大厂商,特别是头部应用开发商永恒的追求。毕竟App 进程死了,就什么也干不了了;一旦 App 进程死亡,那就再也无法在用户的手机上开展任何业务,所有的商业模型在用户侧都没有立足之地了。早期的 Android 系统不完善,导致 App 侧有很多空子可以钻,因此它们有着有着各种各样的姿势进行保活。譬如说在 Android 5.0 以前,App 内部通过 native...翻译 2020-03-18 16:20:23 · 862 阅读 · 0 评论 -
另一种绕过 Android P以上非公开API限制的办法
去年发布的 Android P上引入了针对非公开API的限制,对开发者来说,这绝对是有史以来最重大的变化之一。前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加入了黑名单,而且 Google 要求下半年 APP 必须 target 28,这意味着现在的深灰名单也会生效;可以预见,在不久的将来,我们要跟大量的 API 说再见了。去年我给出了一种绕过Andr...翻译 2020-03-18 11:13:05 · 642 阅读 · 0 评论 -
一种绕过Android P对非SDK接口限制的简单方法
众所周知,Android P 引入了针对非 SDK 接口(俗称为隐藏API)的使用限制。这是继 Android N上针对 NDK 中私有库的链接限制之后的又一次重大调整。从今以后,不论是native层的NDK还是 Java层的SDK,我们只能使用Google提供的、公开的标准接口。这对开发者以及用户乃至整个Android生态,当然是一件好事。但这也同时意味着Android上的各种黑科技有可能会逐渐...翻译 2020-03-18 10:43:29 · 842 阅读 · 0 评论 -
插件化原理解析——ContentProvider的插件化
目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的特点定制了不同的插件化方案;那么对于ContentProvider,它又有什么特点?应该如何实现它的插件化?与Activity,BroadcastReceiver等频繁被使用的组件不同,我们接触和使用ContentProvider的机会...翻译 2020-03-17 17:08:08 · 456 阅读 · 0 评论 -
插件化原理解析——Service的插件化
在Activity生命周期管理以及广播的管理中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件化方案,相信读者已经对Android Framework和插件化技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件化方式。与Activity, BroadcastReceiver相比,Serv...翻译 2020-03-17 14:22:47 · 565 阅读 · 0 评论 -
插件化原理解析——广播的管理
在Activity生命周期管理以及插件加载机制中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢?相比Activity,BroadcastReceiver要简单很多——广播的生命...翻译 2020-03-16 16:07:20 · 158 阅读 · 0 评论 -
插件化原理解析——插件加载机制
上文Activity生命周期管理中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过HookAMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中;通常...翻译 2020-03-16 14:12:59 · 983 阅读 · 0 评论 -
插件化原理解析——Activity生命周期管理
之前的Android插件化原理解析系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在Android系统上运行起来?在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,但是...翻译 2020-03-16 13:52:45 · 728 阅读 · 0 评论 -
件化知识详细分解及原理 之资源的使用及动态加载 附demo
上一篇我们已经完成了一个真正可运行的插件化demo,而且demo中也解决了插件中不可以使用资源的问题,但是由于篇幅的问题我们并没有对原理讲解,所以这一篇是对上一篇的一个收尾,如果没有看过上一篇建议先看件化知识详细分解及原理 之实现代码资源加载及原理讲解 附可运行demo我们的宿主应用调用一个未安装的插件apk,正常情况下是不能访问插件中的资源的,例如 R. ,因为我们宿主中根本就不存在这个资...翻译 2020-03-16 12:25:13 · 180 阅读 · 0 评论 -
插件化知识详细分解及原理 之实现代码资源加载及原理讲解 附可运行demo
我们通过前4篇的分解,分别将插件化设计到的知识点全部梳理了一遍,如果没有看过的,建议先看前面4篇1. Binder机制2. 插件化知识详细分解及原理 之代理,hook,反射,3. 类加载及dex加载4. 应用启动过程及类加载过程5. Android插件化完美实现代码资源加载及原理讲解 附可运行demo6. 插件化资源的使用及动态加载 附demo上面介绍了之前准备的知识...翻译 2020-03-15 22:33:20 · 302 阅读 · 0 评论 -
插件化知识详细分解及原理 之应用的启动过程
这一篇我们说应用程序的启动过程,上一篇插件化知识详细分解及原理 之ClassLoader及dex加载过程。在Android系统中,应用程序是由Launcher启动起来的,其实Launcher本身也是一个应用程序,其他的应用程序安装后会在Launcher的界面上出现一个向右的图标快捷方法,点击这个图标时Launcher就好对响应的应用程序启动起来。我们看一下Launcher的源码:路径是\...翻译 2020-03-14 16:37:11 · 257 阅读 · 0 评论 -
插件化知识详细分解及原理 之ClassLoader及dex加载过程
上一篇插件化知识详细分解及原理 之代理,hook,反射,接着上篇我们说ClassLoader和dex加载过程为了解决65535这个问题,Google提出了multidex方案,即一个apk文件可以包含多个dex文件。不过值得注意的是,除了第一个dex文件以外,其他的dex文件都是以资源的形式被加载的,换句话说,就是Application初始化前将dex文件注入到系统的ClassLoader...翻译 2020-03-14 12:34:54 · 455 阅读 · 0 评论 -
插件化知识详细分解及原理 之代理,hook,反射
上一篇我们说了Binder机制,通过aidl的demo和系统源码的对比进行了运行过程的分析,这一篇我们说代理模式及反射,之前说过了,只是为了梳理插件化需要了解的知识点,所以不会特别深的去讲解。代理模式:也叫委托模式,分为静态代理和动态代理。代理模式也是平时比较常用的设计模式之一,代理模式有代码简洁,高扩展性的特性。主要目的就是为访问者提供一个代理,以达到限制某个对象的访问,也就是说想访问一...翻译 2020-03-13 21:58:50 · 532 阅读 · 0 评论 -
插件化知识详细分解及原理 之Binder机制
前言最近一直在研究插件化的东西,我看了网上大多都是直接上来就开始讲解原理然后写个demo,这样对于很多没有入门的朋友不是很好的理解,下面我会通过自己的研究过程,一步一步循序渐进的将插件化需要的知识点都梳理一遍及讲解,其实学习插件化的好处并不全因为它是一门热门的技术,插件化涉及的知识点很多,可以让我们对android的理解及境界上都会有一个质的飞跃,在我将所有设计的知识点都大概讲一遍后会用一个d...翻译 2020-03-13 15:38:31 · 391 阅读 · 0 评论 -
Android开发插件化来龙去脉
前言随着Android的发展,国内一线企业的项目模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有65535,应用之间的互相调用等等问题,从而催生了插件化技术的产生。2012年插件化概念被提出,到2016年的时候,插件化技术百家争鸣,被一线大厂广泛使用。插件化技术几乎引领了Android技术的进步插件化原理插件化要解决三个核心问题:类加载、资源加...翻译 2020-03-13 12:11:44 · 212 阅读 · 0 评论 -
Android动态加载技术基础3之JVM,DVM,ART的区别
JVM和DVM的区别1、DVM和JVM执行的字节码文件的区别JVM执行的字节码文件是.class文件,而DVM上执行的是Dex文件。之前的文章已经详细分析了这两种文件的区别,再放一个图加深记忆2、JVM是基于栈,而DVM是基于寄存器的由于CPU访问寄存器速度快于访问内存速度,所以DVM在编译的时候花费时间更少,运行更快3、DVM可以在有限的内存中同时运行多个虚拟机的实例,所...翻译 2020-03-12 17:33:40 · 372 阅读 · 0 评论 -
Android动态加载技术基础2之类加载(ClassLoader)
一、虚拟机类加载机制类加载过程是指虚拟机将描述类的数据从Class文件中加载到内存,并对数据进行校验,转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程。 在Java中,类的加载和连接过程都是在程序运行期间完成。虽然会增加运行时的性能开销,但可以提高程序灵活性,这也是Java能够实现动态加载的原因之一。1、类加载的过程Java虚拟机四:类加载机制二、Java中的Cl...翻译 2020-03-12 17:17:49 · 426 阅读 · 0 评论 -
Android动态加载技术基础之Class文件与Dex文件的结构
Class文件Class文件是java虚拟机定义并被其视别的文件格式,通俗地讲,每一个接口或者类对应一个class文件Class文件格式class文件是一组以8位字节为基础单位的二进制流 各数据项目之间没有任何分隔符 Class文件格式采用的结构只有两种数据结构:无符号数和表。无符号数:以u1,u2表示1,2个字节的无符号数,无符号数可用于描述数字、索引引用、数量值、字符串值。...翻译 2020-03-12 16:17:28 · 442 阅读 · 0 评论