自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jesse的专栏

不积跬步无以至千里

原创 Android 热修复方案Tinker(七) 插桩实现

Tinker V1.7.5是最后一个还支持回退Qzone方案插桩实现补丁修复的版本.由于Tinker的全量合成需要拿到原dex,而第三方的加固通常会将原dex隐藏起来做保护所以使用了第三方加固就只能用V1.7.5的Qzone模式.除非自己做dex保护或者不使用加固,但是有时候用不用第三方加固不是开...

2017-02-03 14:17:01 5701 2

原创 Android 热修复方案Tinker(六) Gradle插件实现

这篇文章主要分析一下Tinker中gradle插件的设计以及各个任务的职能.Gradle插件工作流程的简单实现在Android Gradle 插件编写文章中有讲过,这里就不复述了.下图是Tinker Gradle插件的类图结构.

2016-12-29 11:53:43 7615 1

原创 Android 热修复方案Tinker(五) SO补丁加载

SO文件加载的时机和Dex跟资源的加载有些不一样,像Dex和资源的加载都是系统在特定的时机自动去加载,而SO加载的时机则是让开发者自己控制.开发者可以通过System类对外暴露出来的两个静态方法load和loadLibarary加载SO.这两个方法都拿到ClassLoader再通过Runtime实...

2016-12-11 18:00:25 6385 10

原创 Android 热修复方案Tinker(四) 资源补丁加载

想要做资源的更新首先需要了解分析资源加载流程,这样才能找到突破口.一般我们在应用中使用和加载资源都是通过Context对象的getResources方法.这里以Android 6.0的源码分析资源加载的流程.

2016-12-04 16:37:27 7890 9

原创 Java 内存结构分配和回收规则

目录

2020-02-05 14:16:14 64 0

原创 Thread线程间协作

目录

2020-01-21 18:15:21 44 0

原创 Java CAS无锁优化

目录

2020-01-13 10:34:07 171 1

原创 Java对象在内存中的结构和锁状态升级过程

11

2019-12-25 10:12:37 127 0

原创 Thread中断解析

目录

2019-12-19 17:12:48 122 0

原创 ThreadPoolExecutor精简解析

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数...

2019-12-16 10:33:46 135 0

原创 基于Express React AntD和MongoDB构建一个CMS系统

Demeter是一个CMS系统, 提供用户体系以及App项目相关内容管理. 其中会包括用户模块, 项目模块和归档模块等. 该系统会长期迭代和维护.

2017-11-05 11:26:09 3060 1

原创 在redux-observable中替换fetch请求网络数据

通常在React项目中会搭配redux来管理React的state状态. 由于项目有异步action的需求, 并且后续会使用到rxjs, 同时想要action层面保持良好的纯字面量风格, 这时就考虑使用redux-observable提供异步action的支持. 目前项目中用到异步action的场...

2017-08-21 09:52:49 2590 0

原创 Android 安全规约

Android 安全规约汇总了一些安全工具扫描的规则, Android的安全漏洞以及实际项目中需要注意的安全问题. 并分筛选出市面上加固方案和360火线扫描能够覆盖到的, 和需要手工检查的问题. 具体分布如下表所示.规约可以作为开发时的安全手册, 也可以作为上线前的安全问题checklist.

2017-06-12 09:23:07 1293 0

原创 火线扫描Android静态代码

火线扫描是由360公司内部孵化出的免费静态代码扫描工具, 它目前最新版本v1.2.4主要针对Android静态代码的安全问题进行扫描. 在360内部该方案也服务于360安全卫士、手机助手、手机浏览器等15个App. 据火线的开发者说后续可能会对Kotlin(Android first-class开...

2017-06-11 11:56:11 1495 0

原创 React Native Application和Activity源码分析

基于V0.43.3版本 React Native Android端的ReactApplication和ReactActivity的实现原理.

2017-06-04 16:26:03 2373 2

原创 单元测试之道

单元测试的好处是众所周知的, 它可以提早发现bug, 提高开发过程中的项目质量, 完善代码的设计等. 所以大部分人是认同单元测试的作用, 也都同意它的必要性. 但是真正在实施或落地单元测试的时候又会有各种各样的阻力.理由也是多种多样的, 例如费时, 测试代码不是我的工作, 代码能编译通过为什么还要...

2017-05-06 14:18:08 1056 0

原创 React Native 环境搭建, 新建项目, 运行和调试

React Native 可以理解为一个基于 JavaScript, 具备动态配置能力, 面向前端开发者的移动端开发框架. 目前为止虽然一直还没有V1.0.0版本, 但是相信很多小伙伴都了解过或者已经入坑了. 为什么RN那么有人气呢? 我们可以先简单分析一下RN的场景.

2017-04-04 19:56:34 1358 1

原创 Android 开发中使用 AOP

大家对AOP应该都不陌生, 就算没有用过也肯定听说过. 用过或了解过Java AOP的同学应该都知道AspectJ的大名. 因为AspectJ与java程序完全兼容,几乎是无缝关联, 所以只需要做一些简单的AJC适配就可以用在Android开发中. AspectJ用法简单容易上手, 不像之前说过的...

2017-03-19 14:19:44 3625 1

原创 Python 发送邮件脚本

在一些场景中经常需要发送邮件, 像是持续集成和运维报警等. 而使用Python脚本能够很快捷方便得实现发送各种邮件的需求.这里就通过Python基于SMTP(Simple Mail Transfer Protocol)实现一套可以群发,Html内容和附件的脚本. 既然是要发送各种类型的邮件, 首...

2017-02-26 14:41:12 4491 0

原创 Python 自动化加固流程

这里的加固指的是那种需要把文件上传到第三方网站上, 等它加固完成之后再下载下来的场景.这里就以梆梆加固为例, 通过Python脚本将这个过程自动化起来.既然牵扯到第三方的网站, 那么这个脚本绝大多数的操作都跟网络请求相关. 简单设计一下脚本的结构, 先封一个基类出来对外提供一些基础的网络操作, 方...

2017-02-19 12:48:22 2828 4

原创 配置SonarQube,Jenkins集成扫描Android项目

SonarQube是一款开源的质量管理平台, 可以从不同的维度分析项目的质量.也可以把SonarQube跟Jenkins结合起来, 从而帮助我们快递定位潜在的问题, 更好得把控项目输出的质量.SonarQube的安装分为两部分, 分别是Server和Scanner.Server是整个SonarQu...

2017-02-12 14:28:58 5995 0

原创 Android Gradle 插件编写

现在绝大多数的android项目都是使用gradle来构建了,相信大家对gradle已经很熟悉了.像是声明当前module为application, library或者java;又像通过配置android {...}的属性来影响构建或者编译的过程;或者当引入一些需要参与到编译过程的库时,经常需要使...

2016-12-18 17:35:34 4962 3

原创 Android 热修复方案Tinker(三) Dex补丁加载

之前有说到Tinker的修复原理是跟Qzone类似,这里就详细分析一下为什么这样做可以修复补丁.虽然其他Android版本的源码实现可能不一样,但是都是基于相同的原理.所以这里就以Android 6.0的源码为例介绍原理.具体每个系统版本的不同实现下面会详细说明. 首先从加载dex文件的入口开始...

2016-11-23 17:02:36 7037 11

原创 Android 热修复方案Tinker(二) 补丁加载流程

这篇文章从加载补丁的入口tryLoad处开始分析Tinker补丁加载的流程.根据不同的类别Tinker可以支持dex,SO和资源更新,接下来会详细分析.先贴出补丁加载的主要类图.从tryLoad入口开始,tryLoad中调用加载补丁流程的方法,并统计出这次Load Patch所消耗的时间. ...

2016-11-20 12:31:16 6768 6

原创 Android 热修复方案Tinker(一) Application改造

这篇文章主要分析一下Tinker隔离Application.至于为什么要隔离Application?可以参考上一篇 Android 热修复方案分析文章中说到的Qzone方案,要给除了Application子类所有的类注入一个独立dex中的类引用,来避免class被打上CLASS_ISPREVERI...

2016-11-16 16:06:44 14954 2

原创 Android 热修复方案分析

绝大部分的APP项目其实都需要一个动态化方案,来应对线上紧急bug修复发新版本的高成本.之前有利用加壳,分拆两个dex结合DexClassLoader实现了一套全量更新的热更方案.实现原理在Android 基于Proxy/Delegate 实现bug热修复这篇博客中有分解.因为这套方案是在Java...

2016-11-11 16:06:07 6443 0

原创 Android 日志管理框架 NativeLogger

日志是任何项目开发中的必须组件,它可以帮助我们.既然日志可以帮助我们做很多分析,那么开发者肯定是有很多定制需求的,例如不同环境过滤不同等级的log,格式化输出,输出到文件,打包日志上传分析等等.这里就针对Android平台开发一套日志框架.后续将持续完善. github地址:https://gi...

2016-09-12 13:35:36 7529 12

原创 Android 项目部署之Nexus私服搭建和应用

一.概述 Nexus是一个基于maven的仓库管理的社区项目.主要的使用场景就是可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理.简单举几个例子就是: 1.第三方Jar包可以放在nexus上,项目可以直接通过Url和路径配...

2015-09-23 16:33:29 16181 3

原创 Android 运行中效验文件完整合法性

1.概述        因为之前项目有动态热修复的功能,在修复的过程中会从服务器上下载一个新的dex文件来替换老的dex文件,所以就牵扯到文件身份效验的问题.通常接口会下发一个MD5值,只是一个MD5值的话只能做一个完整性效验,并不能确定文件的合法性,如果攻击者模拟接口下发一个正确的MD5值,照样...

2015-09-05 15:19:47 25320 7

原创 Android设计模式之工厂模式 Factory

一.概述 平时做项目跟使用第三方类库的时候经常会用到工厂模式.什么是工厂模式,简单来说就是他的字面意思.给外部批量提供相同或者不同的产品,而外部不需要关心工厂是如何创建一个复杂产品的过程.所以工厂模式可以降低模块间的耦合,同时可以提高扩展性(当有新的产品出现时,只需要扩展工厂就行了...

2015-08-23 16:25:06 22945 7

原创 Android 5.0之后隐式声明Intent 启动Service引发的问题

一.概述 Android系统升级到5.0之后做了不少的变化(5.0变化),开发人员一定要注意这些变化,要不然就有的折腾了.这次最大的变化应该是把Dalvik虚拟机改成了ART(Android Runtime),后续会专门讲解这一块.其他的都是一些零碎的问题,例如前段时间发了一篇An...

2015-08-13 15:16:24 36111 10

原创 Android源码之DeskClock (四)

一.概述 之前写三的时候饶了个弯,通过DeskClock这个项目简单实现了一下加固+热修复,在这篇继续回到正规继续分析源码.在二里面大致分析了DeskClock的主入口,跟四个主要功能Fragment的转换,从这篇开始就着手分析这四大功能.先从Clock功能的Fragment开始讲...

2015-08-09 18:20:43 11289 2

原创 Android设计模式之代理模式 Proxy

一.概述 代理模式也是平时比较常用的设计模式之一,代理模式其实就是提供了一个新的对象,实现了对真实对象的操作,或成为真实对象的替身.在日常生活中也是很常见的.例如A要租房,为了省麻烦A会去找中介,中介会替代A去筛选房子,A坐享中介筛选的结果,并且交房租也是交给中介,这就是一个典型的...

2015-07-28 22:14:05 24232 10

原创 Android 基于Proxy/Delegate 实现bug热修复

一.概述 现在越来越多的app开始采用本地app结合html5的设计结构,这样做不仅可以跨平台,并且在某个业务或模块出了严重的bug,可以直接在html5+后台实时修复,省去了发布新包和新版本的步骤.那么在不是html5结构的android app中怎么实现不重新打包更新版本的情况下...

2015-07-21 12:08:45 16253 1

原创 Android 5.0之后对HashMap的修改

Android 5.0之后对HashMap的修改

2015-07-20 21:05:52 10759 1

原创 Android源码之DeskClock (三) Proxy/Delegate Application 框架应用

1.概述 当项目有加壳子的需求的时候,可以使用Proxy/Delegate Application框架的方式,在正常的模式中,一个程序一般只有一个Application入口,而Proxy/Delegate模式中需要有两个Application,原程序的Application改为Delegate A...

2015-07-20 09:09:17 13896 7

原创 Android源码之DeskClock (二)

1.概述 在DeskClock(一)中介绍了该程序源码的迁出,现在开始分析该应用的源码,DeskClock主要有四个功能,闹钟,时钟,定时,和秒表,在这篇博客中主要分析DeskClock的入口和主UI上的逻辑结构,在后续的系列中会把这四个功能都串起来.

2015-07-13 18:01:59 15470 1

原创 Android activity-alias 多入口配置

以前装应用的时候有些应用会在桌面上生成两个图标,这两个图标有些是同一个Activity的入口,有些是另外一个Activity的入口,这样的效果是怎么实现的呢?在看Android原生DeskClock程序的时候看到了这个功能的实现.使用的是activity-alias: 1.语法格式 <act...

2015-07-11 10:27:02 17317 1

原创 Android源码之DeskClock (一)

一.概述 二.移植出DeskClock 这个系列分析的是Android kitkat(4.4)版本的DeskClock程序.用4.4版本来分析主要原因是博主的手机是4.4的,之前有移植lollipop的DeskClock程序到手机上,结果不兼容,后来就用kitkat的DeskClock程序...

2015-07-06 14:16:21 17749 1

原创 Android设计模式之单例模式 Singleton

单例模式是设计模式中最简单的一种, 由于它没有设计模式中各种对象之间的抽象关系, 所以有人不认为它是一种模式, 而是一种实现技巧. 单例模式就像字面的意思一样, 创建全局唯一的一个实例, 提供给外部使用. 要达到这几点要求就要满足三点: 私有构造函数(防止被别人实例化), 静态私有自身对象(用来提...

2015-07-01 13:21:31 14270 2

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