AllenWang的个人博客

小楼一夜听春雨


  • 首页

  • 分类

  • 归档

  • 标签

  • menu.ad

Android插件化(五):OpenAtlasの四大组件的Hack

发表于 2017-02-03 | 分类于 android_plugin

引言

到目前为止,我们已经分析了OpenAtlas中插件的安装,卸载,更新,以及安装好插件之后组件类的加载过程,但是对于这些是如何引发的还不知道,比如,在宿主的一个Activit中调用startActivity()跳转到插件中的一个Activity,如何判断这个Activity在的插件是否已经安装,如果没有,需要在哪里判断并安装呢?

要回答这些问题,就需要对于Android中四大组件的启动过程非常熟悉(主要涉及到ActivityThread,ApplicationThread,H,Instrumentation,ActivityManagerNative,
ActivityManagerProxy,AMS等),之后Hook一些关键的对象,然后在关键的位置进行判断并安装插件

阅读全文 »

Android插件化(四):OpenAtlasの插件的卸载与更新

发表于 2017-02-03 | 分类于 android_plugin

如果看过我的前两篇博客Android插件化(二):OpenAtlas插件安装过程分析和Android插件化(三):OpenAtlas的插件重建以及使用时安装,就知道在插件的安装过程中OpenAtlas做了哪些事,那么插件的卸载就只需要把持久化和内存中的内容移除即可

阅读全文 »

Android插件化(三):OpenAtlas的插件重建以及使用时安装

发表于 2017-02-03 | 分类于 android_plugin

在上一篇博客Android插件化(二):OpenAtlas插件安装过程分析中深入分析了OpenAtlas的随宿主启动的插件安装过程,本文将对插件的重建,”使用时插件的安装”过程,以及插件安装后类的加载过程进行分析,其中”使用时安装”这是我自己的定义,它类似懒加载机制,比如在需要用到插件中的某个组件时,会先check一下,如果发现有插件存在该组件,并且插件还未安装,就会先安装该插件

阅读全文 »

Android插件化(二):OpenAtlas插件安装过程分析

发表于 2017-02-03 | 分类于 android_plugin

在前一篇博客Android插件化(一):OpenAtlas架构以及实现原理概要中,我们对应Android插件化存在的问题,实现原理,以及目前的实现方案进行了简单的叙述。从这篇开始,我们要深入到OpenAtlas的源码中进行插件安装过程的分析。

插件的安装分为3种:宿主启动时立即安装,宿主启动时延时安装,使用时安装,其中使用时安装采用的是一种类似懒加载的机制。

这3种方式只是前面的处理有所不同,最后安装逻辑都是一样的。限于篇幅,本文只分析宿主启动时安装,使用时安装在下一篇分析。

由于宿主启动时安装和宿主启动时延时安装的逻辑大体相同,所以放在一起讲解,它们的流程如下

阅读全文 »

慎用ShellUtils:从一个中间件导致的crash说起

发表于 2017-01-26 | 分类于 android

引言

ShellUtils是Trinea为了方便开发者使用shell命令而开发的一个封装库,其本意是好的,但是如果对应要运行的脚本不够了解,就可能会引发严重的后果

阅读全文 »

Android插件化(一):OpenAtlas架构以及实现原理概要

发表于 2017-01-24 | 分类于 android_plugin

引言

在刚刚过去的云栖大会上,手淘宣布其移动容器化框架Atlas将于2017年年初开源,对这个框架,在过去团队对外部做过一些分享,外界也一直对其十分关注,到现在它终于即将开源了。

在Atlas开源之前,让我们把时间往回拨一点,看看bunnyblue在研究手淘客户端之后,发现Atlas部分混淆得不彻底,之后在此基础上捣鼓出了OpenAtlas.根据手淘团队玄黎在云栖大会上的发言,可以看出OpenAtlas的完成度非常高,基本实现了玄黎所透露的功能。

不过,由于一些未知的原因,目前bunnyblue已经把OpenAtlas从自己的repositories删除了,取而代之的是ACDD,不过ACDD其实主要是在OpenAtlas的基础上做了一些优化,核心的架构并没有修改。所以分析完OpenAtlas也基本相当于分析了ACDD.需要fork OpenAtlas的童鞋可以到我的repositories下进行fork,链接为OpenAtlas

阅读全文 »

Android插件化前番:预备知识

发表于 2017-01-08 | 分类于 android_plugin

引言

Android的插件化目前可谓是百花齐放,从最早的《Android内核剖析》中柯元旦对于插件化的简单示例,到任玉刚的DynamicLoadApk,再到360的DroidPlugin,以及阿里的Atlas。虽然它们的实现方式有差异,但也有很多的共同点。要想理解它们的原理,需要一些预备知识。建议把本篇Blog与Java服务框架分析结合起来看

阅读全文 »

CoordinateLayout

发表于 2016-12-27

定制你的专属Toolbar

发表于 2016-12-26 | 分类于 android

引言

Toolbar是随着Material Design一起推出的,不过需要注意的是它在support-v7包中,而不是support-design library中。虽然从Android 5.0开始就使用Toolbar了,但是一直没有系统地总结过。正好最近几天有点时间,就讲一下Toolbar的样式定制好了。

1.Theme的选择

由于要用Toolbar代替ActionBar,所以要求Activity的样式中无ActionBar,否则会报错。所以AppTheme一般会选择Theme.AppCompat.Light.NoActionBar这个主题,但是如果想要Dark的主题呢?
其实也可以,就是需要在style中加上以下两句

阅读全文 »

数据库范式

发表于 2016-11-21 | 分类于 db

1.什么是范式

简单的说,范式是为了消除重复数据减少冗余,从而让数据库内的数据得到更好地组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。(比如满足2NF一定满足1NF).

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

本文将以一个demo来讲解1NF-5NF以及BCNF

阅读全文 »
1234…16
Allen Wang

Allen Wang

152 日志
25 分类
8 标签
© 2018 Allen Wang
由 Hexo 强力驱动
主题 - NexT.Muse