Android中插件开发篇总结和概述

刚刚终于写完了插件开发的最后一篇文章,下面就来总结一下,关于Android中插件篇从去年的11月份就开始规划了,主要从三个方面去解读Android中插件开发原理。说白了,插件开发的原理就是:动态加载技术。但是我们在开发插件的过程中可能会遇到很多问题,所以这里就分为三篇文章进行解读的,而且也是循序渐进,解决了插件开发过程中可能会遇到的问题,不过这三篇的基础还是动态加载技术。


第一、插件开发基础篇:动态加载技术解读

http://blog.csdn.net/jiangwei0910410003/article/details/17679823

这篇文章主要介绍了Android中的DexClassLoader类的功能,以及我们如何使用动态加载技术,为何要使用动态加载技术等问题的解释,最开始的时候,我们就是使用这个类进行功能模块的剥离,让一些模块放到指定的jar/dex/apk中,然后去动态加载,这样做的好处是,减小包的大小,功能会更加灵活。

技术点:DexClassLoader的源码解读,使用


第二、插件开发开篇:类加载器分析

http://blog.csdn.net/jiangwei0910410003/article/details/41384667

这篇文章主要介绍了Android中主要的两个类加载器:PathClassLoader和DexClassLoader,他们的区别,联系,用法等问题,以及我们在制作插件的过程中会遇到哪些常见的问题。这篇文章也是后续两篇文章的基础,因为如果不了解这两个类的话,我们将无法进行后续的操作。

技术点:PathClassLoader类和DexClassLoader类的源码解读,他们之间的却别和联系


第三、插件开发中篇:资源加载问题(换肤原理解析)

http://blog.csdn.net/jiangwei0910410003/article/details/47679843

这篇文章主要通过现在一些应用自带的换肤技术的解读来看看,在开发插件的过程中如何解决一些资源加载上的问题,这个问题为何要单独拿出来解释,就是因为他涉及的知识很多,也是后面一篇文章的基础,我们在需要加载插件中的资源文件的时候。改如何处理。这里都做了详细的解释。同时有了这个技术之后,我们就可以实现应用的换肤开发了。

技术点:动态加载资源,AssetManager类的源码解读


第四、插件开发终极篇:动态加载Activity(免安装运行程序)

http://blog.csdn.net/jiangwei0910410003/article/details/48104455

这篇文章主要是讲解了如何加载插件中的Activity。从而实现免安装运行程序,同时这篇文章也是对前三篇文章知识的综合使用。下载很多应用都会使用到插件技术,因为包的大小和一些功能的优先级来决定哪些模块可以制作成插件。这篇文章还介绍了两种方式去动态加载Activity.这两种方式各有各的好处和坏处。

技术点:两种方式加载Activity,LoadedApk类和ActivityThread类的源码解读


总结

本身Android中的动态加载技术就很吃香,我刚刚接触到这个技术的时候,正好是我大学毕业那年2013年。当时我们需要做聚合广告SDK,所以需要对各家广告做处理,使用动态加载的技术来加载各家广告的SDK。第一次接触到动态加载的时候,还是很兴奋的,因为感觉。代码还可以这么写。功能的剥离那么好。所以很是痴迷这个技术。后来只是因为个人兴趣,就开始深入研究一下插件开发的技术,当然本质还是动态加载,只是需要解决一个特定的问题。现在也有很多大牛写了一些框架,个人感觉最好的还是这个哥们写的框架:

https://github.com/Qihoo360/DroidPlugin

哈哈,看名字就知道是360的,哎,不得不佩服国内技术研究啥的360公司可以算是比较牛逼的。

当然我相信,随着时间的推移,肯定还会有更多的牛人研究这个技术,开发出更加完善的框架,我就很期待呀。


更多内容:点击这里

关注微信公众号,最新Android技术实时推送



转载于:https://www.cnblogs.com/roccheung/p/5797274.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java反射机制 路径_Java 反射机制详解

引言本文主要介绍Java中,有关反射机制、类的加载过程、以及控制反转方面的内容。Java 反射机制Java创建对象的方式有哪些:new、反射、反序列化、克隆class对象获取的方法有哪些:类名.class、getClass、forName、classLoader.loadClass(‘包类…

prop和attr在 jquery的

https://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html转载于:https://www.cnblogs.com/beimingbingpo/p/9254680.html

java传入数据库生成柱状图_Java读取数据库数据生成柱状图

此案例是用swing显示数据的。须要引入jfreechart相关包。不同版本号可能包不同样。本人用的是此案例在ssi框架下会报错,不用框架就没问题。Java后台逻辑代码:public class BarChart {ChartPanel frame1;public BarChart() {CategoryDataset dataset get…

SVN系列操作(一)

SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,常用于软件开发项目中,实现代码、文档等的历史版本保存、共享和权限管理。 进入SVN本地目录,第一步操作就是update。 为什么呢?因为SVN是…

ubuntu-14.04.2-desktop使用方法

一、安装VMware Tools 1. 在VMware Workstation11.1.0下安装Ubuntu镜像:ubuntukylin-14.04.2-desktop-amd64.iso 2. 点击虚拟机菜单栏-安装VMware Tools。 3. 在Ubuntu系统光盘中找到VMwareTools-9.9.2-2496486.tar.gz,右键复制到“桌面”,然…

ubuntu 跟xshell的问题

有2个分析: 1:是windos的防火墙没有关闭 2:是虚拟机没有安装sshd服务器 ubuntu在CLI界面下输入:dpkg -l |grep ssh 因为是我安装过的sshd server 要是没有sshd server 就要输入 安装。 三:要是安装完之后 链接显示说…

java gdal postgresql_使用GDAL/OGR操作Postgresql数据库

GDAL(Geospatial Data AbstractionLibrary)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。本文将使用GDAL/OGR库读写Postgresql数据库中的表&#x…

Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性...

一、前言 当我们项目较为简单时,我们在src目录下新建一个该项目目录,里面存放源码文件即可,见下图: 当我们一个项目较为复杂时,我们可以在src目录下新建一个该项目目录,在针对该项目不同模块创建不同目录&a…

java参数转换匹配规律_隐式转换规则

隐式转换在如下三种不同的情况会被考虑:1、当对象A调用某个方法时,这个方法不存在例如在前一节介绍的1 to 10。会将Int转换为RichInt,然后再调用to方法。在这种情况下,会将对象A(方法的调用者)隐式转换为另一个对象。2、当对象A调…

Semantic-UI的React实现(二):CSS类构造模块

更简单的类名标签 Semantic-UI使用了更简单的类名声明。用过Bootstrap的同学都会被其复杂的类名标签折磨过&#xff0c;例如一个简单的按键样式&#xff0c;不论颜色或是大小&#xff0c;都需要btn-前缀声明&#xff1a; <button type"button" class"btn btn…

T-SQL LIKE子句 模糊查询

MS SQL Server LIKE子句用于使用通配符运算符将值与类似值进行比较。 有两个通配符与LIKE运算符结合使用: 百分号&#xff08;&#xff05;&#xff09;下划线&#xff08;_&#xff09;百分号表示零个&#xff0c;一个或多个字符。 下划线表示单个数字或字符。 符号可以组合使…

ext springmvc mysql_基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)...

先从后台讲起1.表的设计2.mysql查询很容易&#xff0c;关键是要把id,text,parentId查出来/p>"http://mybatis.org/dtd/mybatis-3-mapper.dtd">SELECTbp.id,bb.name brandName,bp.name text,bp.photo_url photoUrl,bp.number,bp.add_time addTime,bp.modify_tim…

C# 之 Int16 Int32 Int64 的区别

Int16 值类型表示值介于 -32768 到 32767 之间的有符号整数。 Int32 值类型表示值介于 -2,147,483,648 到 2,147,483,647 之间的有符号整数。 Int64 值类型表示值介于 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的整数。 --------------------------------…

php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事

起步 - 代码怎么写 作者&#xff1a;KK发表日期&#xff1a;2016.3.9要写PHP代码就需要建立.php后缀的文件,并且在文件里要以<?php 具体代码 ?>这样的形式来书写PHP代码我们在网站目录下新建一个叫index.php的文件,并在里面编写这样的代码:echo Hello World!;?>然后…

python中的计算符号

1、算数计算符号&#xff1a; - * /   //&#xff08;取整&#xff09;  %&#xff08;取余&#xff09;  **&#xff08;次方&#xff09; 1 >>> 682 143 >>> 9-34 65 >>> 3*46 127 >>> 16/28 8.09 >>> 9/2 10 4.5 11 >…

MySQL 索引优化全攻略

2019独角兽企业重金招聘Python工程师标准>>> 所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字…

织梦DedeCMS实现 三级栏目_二级栏目_一级栏目_网站名称 的效果代码

1.将官方原来的排列方式反过来&#xff0c;找到include/typelink.class.php第164行 $this->valuePositionName $tinfos[typename].$this->SplitSymbol.$this->valuePositionName; 修改为&#xff1a; $this->valuePositionName $this->valuePositionName.$…

MyEclipse 14 设置文件特定的打开方式

2019独角兽企业重金招聘Python工程师标准>>> 打开windows -> preferences&#xff1b; 转载于:https://my.oschina.net/AaronDMC/blog/755481

安装安全狗后php5.5无法访问,关于安全狗的详细介绍

这篇文章主要介绍了win2008 R2安装网站安全狗提示HTTP 错误 500.21的解决方法,需要的朋友可以参考下WINDOWS 2008 R2系统IIS7.5&#xff0c;在没安装网站安全狗前一切正常&#xff0c;安装网站安全狗3.3版后&#xff0c;有部分php网站无法访问。提示如下错误&#xff1a;HTTP 错…

Android 里的数据储存

数据持久化关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化,包含文件储存,SharedPreferences,SQLite储存和ContentProvider(内容提供者)) 内…