自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

何以诚的专栏

时间催着人走,那就together

  • 博客(71)
  • 资源 (6)
  • 收藏
  • 关注

原创 从此不再更新博客,新的博客地址我会在以后公布

原因:前天我的博客被推荐到主页,今天就有通知说我涉嫌刷博客流量。我也不想去追问什么,就是对这网站失去信心,以后我会转战简书,从此不再踏入CSDN半步。

2016-10-19 21:07:04 1320 1

原创 使用APT减少MVP的冗余代码

前言不知道从何时起,移动端开发都开始采用MVP。我们在认识到MVP有点的时候,也不妨会察觉到它其实也有很多恼人的地方,比如,我们针对每种状态渲染不同的视图: private void renderInit() { mViewA.setVisibility(View.VISIBLE); mViewB.setVisibility(View.GONE);

2016-10-16 15:12:49 5022

原创 使用APT减少MVP的冗余代码

http://blog.csdn.net/u013022222/article/details/52830190

2016-10-16 15:07:22 309

原创 OpenGL ES —— Perspective Projection的推导

引言透视投影(Perspective Projection)是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。 简单的来讲就是把图中的cube投影到屏幕上(二维图形)的过程,我们丢弃了Z坐标,然后将它投影到屏幕上。(显然这种简单的投影会是的画面不是很真实,因为在现实世界里,越

2016-09-25 14:03:36 3280 1

原创 Android增量升级(结合small框架)

http://blog.csdn.net/u013022222/article/details/52268526

2016-08-21 18:12:22 394

原创 Android Small框架增量升级方案

背景随着业务的发展,安装包的体积也在不断的增大,这时候,如果要版本更新,用户不得不去下载完整的安装包。但是如果使用增量升级方案,用户只需要下载新旧版本的差异包,然后在本地合成就行,这样省时省力。我们可以看下某产品使用增量升级时的数据:xxx.2.4.0000.apk 32MBxxx.2.5.0000.apk 28MB差异包 6.3MB其中增量

2016-08-21 17:59:56 6288

原创 结合友盟统计的多渠道快速打包

随着业务的增长,传统的多渠道打包方式已经不符合需求。比如,我们需要在360, 豌豆荚等平台发布新版本,就必须对每一个应用商店编译一份apk,然后发布。可是如果我们要发十来个应用商店呢?是不是还要再编译一次?然而我们只是改变了友盟的渠道号,就必须再打包一次,这对时间显然是种巨大浪费。所以我们必须寻找突破,最好是在原来的基础之上,仅仅需要一点点的修改,就能够做到快速多渠道打包。源码:github一次偶然

2016-07-26 17:02:39 7631 11

原创 结合友盟统计的多渠道快速打包,一秒五包不是梦

http://blog.csdn.net/u013022222/article/details/52034767

2016-07-26 17:02:00 252

原创 结合友盟统计的多渠道快速打包,一秒五包不是梦

http://blog.csdn.net/u013022222/article/details/52034767

2016-07-26 17:01:20 441

原创 网易云音乐API 分析

这几天一直在做一个仿QQ音乐的APP,但是苦于资金问题,一直没能解决服务器问题,所以打算使用第三方的服务。我这里的第三方就是网易云。在此之前,我有分析过多家的api,大部分都不太好实现。其技术难点就在于获取音乐文件的请求都已经使用了tcp进行实现,获取的难度太大。不过有一家除外,那就是网易云。我们这里使用重放攻击来实现获取服务器信息。打开我们的charles(如果你还没有下载过,请参考我的这篇博客:

2016-06-18 21:55:15 53065 16

原创 网易云音乐api分析

http://blog.csdn.net/u013022222/article/details/51707352#0-qzone-1-711-d020d2d2a4e8d1a374a433f596ad1440

2016-06-18 21:48:33 1754

原创 Retrofit分析与实现

前言估计很多人和我一样,在接触retrofit这个库的时候就被它强大的功能所吸引住了。它不同于传统的网络请求方式的是,retrofit巧妙的采用接口方式进行网络请求,每次调用接口方法,就是对应一次网络请求,这对于长期和丑陋接口做斗争的程序员来说这简直是莫大的福利啊。然而光是用肯定是不行,我们还得搞清其中的原理,知其why。一番周折之后,我发现自己在阅读源码并实现的过程中已经能作一文,于是写出来分享,

2016-06-04 18:31:39 5234 7

原创 实现自己的retrofit

http://blog.csdn.net/u013022222/article/details/51583830

2016-06-04 18:24:06 160

原创 mac 搭建react-native环境,无法run-android的问题

最近搭建react-native环境的时候碰到如下问题:Could not expand ZIP '/Users/chan/.gradle/caches/modules-2/files-2.1/com.facebook.fresco/drawee/0.8.1/a944015ddf50fdad79302e42a85a351633c24472/drawee-0.8.1.aar'.我尝试删除gradle下

2016-05-20 21:39:05 4228

原创 android插件化开发——加载广播

阅读本文前,先阅读前面几篇: http://blog.csdn.net/u013022222/article/details/51171720引言在android开发过程中,我们不可避免的会使用广播,比如,侦听开机,侦听短信。 而对于广播,我想很多人都知道他有两种类型,动态广播,通过代码在runtime进行register, 像这样: IntentFilter intentFilter =

2016-05-15 12:30:27 6853 3

原创 android插件化开发——hook方式 第六篇

http://blog.csdn.net/u013022222/article/details/51295208

2016-05-15 12:25:40 320

原创 android插件开发——加载插件

在阅读本博文的时候,我假设你已经阅读了我之前写的几篇。猛击此处通过前面的几篇博客,我们解决了如何启动一个并没有在ActivityManifest.xml中声明的activity。但是有很多细心的读者私信我说,我们所有的例子里,插件都是和主工程在一起的呀,我们如何从外部加载一个apk获得dex呢?本节就是解决这个问题。 在学习本节之前,有一些非常重要的概念需要提一下。比如类加载器的概念。 我们知道

2016-04-17 17:31:52 6353 8

原创 android插件化开发——通过hook加载插件apk

http://blog.csdn.net/u013022222/article/details/51171720

2016-04-17 17:27:24 569

原创 android插件开发之启动插件的组件——actvity

http://blog.csdn.net/u013022222/article/details/51144597 http://blog.csdn.net/u013022222/article/details/51148832

2016-04-14 22:57:51 155

原创 android插件化开发hook技术的运用

启动插件中的activity: http://blog.csdn.net/u013022222/article/details/51144597 http://blog.csdn.net/u013022222/article/details/51148832

2016-04-14 22:34:29 121

原创 android插件开发-就是你了!启动吧!插件的activity(二)

这篇博客是上篇的延续,在阅读之前先阅读第一部分:第一部分 我们在启动插件的activity时,通过替换component成功欺骗AMS获得了启动一个activity所必须的一些资源。不过,我们还没有把获取的那些资源都转移到插件的activity之下。这一节就是解决这个问题。所有的答案都是分析源码之后得到的,所以我们还和之前一样继续分析源码,看下AMS是怎么把资源关联到一个activity上的,这样

2016-04-14 21:53:05 6043 4

原创 android插件化开发 不同于之前插件化做法,另辟蹊径

http://blog.csdn.net/u013022222/article/details/51144597 http://blog.csdn.net/u013022222/article/details/51148832

2016-04-14 21:50:20 116

原创 android插件开发-就是你了!启动吧!插件的activity(一)

通过之前的例子例子,我们学习了如何寻找hook点,并且做一些非常无聊的事情。比如是的粘贴板放一句无聊的句子,或者让系统在启动一个activity时打印一句话。这些看似无聊的事情其实都是为了本节做铺垫。 这一节会把之前的知识都贯穿起来——启动插件中的activity,不过这篇博客比较长,所以我分开成为两部分了第二部分启动插件的activity还是非常难的一件事,因为在android中,所有的acti

2016-04-14 09:20:51 5549 3

原创 android插件化开发-hook方式

已经陆续写了两篇 第一篇:http://blog.csdn.net/u013022222/article/details/51111814 第二篇:http://blog.csdn.net/u013022222/article/details/51114391都是自己平时在网上阅读大牛博客的心得 希望大家能够喜欢...

2016-04-11 18:04:44 156

原创 Android插件化开发-hook 系统服务(通过binder修改粘贴板服务行为)

如果您还没有阅读第一部分的内容,这篇文章不需往下读,在阅读第一部分后才能继续下面的内容:Hook动态代理基于上面的一篇博客,我们学习了代理的概念,以及如何寻找Hook点。本篇博客将继续拓展前文,不过这次内容要深入很多,这些都是继续学习插件化的基础,为了避免长篇的介绍代理这些枯燥的概念,我特意把它分开来讲,难度一次提升,希望读者能够耐心阅读。之前我们解释代理设计模式的时候,用的是小明打官司的例子,通过

2016-04-11 13:52:10 5393 1

原创 Android插件化开发-hook动态代理

首先,我们阐述为什么android需要插件化: 1:由于业务的增长,app的方法数逐渐达到65535(有人说用于检索方法数的列表大小使用short存储的,其实我看了源码之后并没有发现相关信息,并对此说法产生了怀疑,不过最后找到的结果就是,65535这个限制可能是由于dalvik的bytecode大小限制的,具体的可以查看官方文档)。 2:一个模块的变化都要整体编译一次app,维护成本太大了,用插

2016-04-10 11:19:59 9239 9

原创 云舒天气项目分析之架构

项目采用mvp架构view指 activity fragment, 用于接收用户动作,并为之响应,具体的无关界面的逻辑都交给presenter做Presenter用于执行具体的业务逻辑,它也和view进行交互,在执行完一个动作之后,presenter可通过回调与view进行通信。至于和model的交互,presenter并无实际感知,它通过DI注入实例,所有的访问都是基于接口。之后基于rxandro

2016-04-06 10:35:19 1150

原创 云舒天气上线啦

截图 连续几日的coding我的第一个个人应用上线啦 其实本质上这款应用是用于炫技的 笔者大三 准备找工作。所以有意展示下自己掌握的技能。应用取名云舒,意取”风卷云舒恋着帆”中间二字,亦与我很崇拜的安全专家同名。应用特色: 1:开源代码 2:multidex分包 3:动态主题切换 4:城市增量包设计 5:在线crash分析 6:多渠道打包 7:基于mvp的架构 8:基于消息

2016-04-05 22:13:07 1843 1

原创 友盟feedback okio包冲突解决方案

之前项目用到了umeng的feedback模块,在尝试Build的时候出现如下报错: Error:Execution failed for task ‘:app:transformResourcesWithMergeJavaResForDebug’. com.android.build.api.transform.TransformException: com.android.builde

2016-04-05 10:34:54 2800 2

原创 CircleProgress

How to usemaven<dependency> <groupId>com.chan.circleprogress</groupId> <artifactId>circleprogress</artifactId> <version>0.1</version> <type>pom</type></dependency>gradle compile 'com.chan.

2016-03-24 11:55:46 1108 1

原创 沉浸式状态栏源码分析

开源项目system bar tint的链接**何为沉浸式** 上图: 传统意义上的状态栏如下图:当我们对界面要求非常苛刻(颜色要统一),我们就需要用沉浸式。值得注意的是,沉浸式状态栏只能用于4.4以上的设备。对于4.4一下的设备,我们并没有办法实现我们先来看下git上关于该项目的使用方法。@Overrideprotected void onCreate(Bundle savedInstanc

2016-03-14 19:51:20 1363

原创 Android MVVM的沉思

大概有一个月的时间,我都在反思移动端应用的架构,尝试过mvc,这大概是大部分人刚开始入门的时候使用的模式了。然而细思一下,在android里面这种架构恐怕行不通,比如,我们的activity,要获得系统服务的话都要通过getService(*)之类的代码,这无意中就让activity的责任乱了起来,按理说activity应该就是一个view,它不应该拥有类似controller的职责。 于是,我开

2016-03-12 16:14:00 2594

原创 何以诚快变成神经哥了

花了十天时间做软件,每天除了上课就是编码。。。严重缺乏阅读!!!!头晕,头痛,各种编码各种测试,如果不上课,一天都是十几小时的编码,我快耗尽心血了。crash日志已经看得头昏眼花。早上写了两小时博客。。。还没写完。打算把protobuf rxjava dragger2 retrofit crash分析...集合到一起写,算是给不久的面试做个铺垫。。。还有我心爱的开发技术前线网不能访问了。。。。

2016-03-06 10:47:20 1182 1

原创 when the android meet dagger2

What is dagger2?dagger是一个依赖注入框架,不同于传统的依赖注入框架的是,dagger的代码是使用代码生成器进行机器生成,区别于传统的DI框架依赖反射。所以,dagger2更适合于android开发。并且,dagger2是基于JSR330,通过@Inject注解标示依赖,这个注解可用于方法(method),域(field),构造函数(ctor)。我们可

2016-02-15 20:53:44 1225

原创 Protobuf的那些事

当大多数公司还在纠结于如何更好提高MobileAPI的性能时,有的公司已经开始抛弃http + json,开始走向tcp + protobuf的路线了。那么什么是protobuf呢:protobuf是一种基于二进制的协议,它能够非常快速高效的序列化数据,考虑之前的xml,但是它的体积要比xml小的多得多。当然使用它还有其他非常之多的理由。我们考虑java的情况,传统的序列化方法就是实现Seri

2016-01-15 14:09:54 24067 1

原创 Android Studio开发安卓插件

看了看网上所有关于开发安卓软件的文章,大多是围绕eclipse的开发环境开始的,关于as的实在是太少而且其中还是存在不少的错误的。处于对这门热门技术的好奇,我花了两天时间做了一个简单的demo,差不多已经可以慢慢起步开发微信抢红包的插件了首先我们先开始做一个简单地demo,能够动态的加载代码,到这里的时候,我希望读者能够了解java的类加载过程,因为其中涉及的知识还是很多的,我之前阅读

2015-12-18 10:28:25 1512

原创 汽水小公举控件

https://github.com/ChanJLee/SodaLadypackage com.os.magic.progressbar.soda.view;import android.annotation.TargetApi;import android.content.Context;import android.content.res.Resources;im

2015-11-27 09:38:16 895

原创 基于xmpp的协议即时通讯软件开发--理论(一)

我在大二下学期的时候接触安卓,当时学完基础之后一直想做一个软件。想做的东西有很多,但唯独对即时通讯这块非常感兴趣,我很好奇微信背后实现的原理是什么。一番周折,我接触到了xmpp协议。如今闲暇,遂提笔记录当初开发学习之路。xmpp起源非常之久(我那时候估计还在上幼稚园): 基本语法语义最初是由 Jabber 开源社区在 1999 年开 发的。2002 年,XMPP 工作组授权开发一个 J

2015-11-14 16:27:47 1275

原创 开源项目ExplosionField(爆炸特效)源码分析

这是前几日在朋友圈传疯了的开源项目 如果没记错的话 小米手机卸载应用的时候就是使用的这个效果 于是我去github fork 了这个项目 地址如下:点击打开链接效果图:我使用的IDE 是 android studio 我把源码 和范例程序简单的移植到了android studio 然后随便拿了几个图(其实是QQ空间apk里的)工程目录如下

2015-10-09 09:55:42 2816 1

原创 android之gradle构建工具学习之路(二)

SyntaxThis chapter covers the syntax of the Groovy programming language. The grammar of the language derives from the Java grammar, but enhances it with specific constructs for Groovy, and allows

2015-09-15 21:04:46 1498

插件源码插件源码插件源码插件源码插件源码

android,hook,插件化android,hook,插件化android,hook,插件化android,hook,插件化android,hook,插件化android,hook,插件化

2016-05-15

插件化开发加载apk源码

插件化开发加载apk源码

2016-04-17

android插件代码示例

android插件代码, Intent intent = new Intent(activity, who); intent.putExtra(Constant.EXTRA_INVOKE_PLUGIN, true); activity.startActivity(intent);

2016-04-14

databinding的demo代码

google,io大会的databinding demo

2016-03-12

Protobuf-master包

android,java,protobuf,

2016-01-15

Explosion Field

开源项目的代码 但我移植到android studio里了

2015-10-09

空空如也

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

TA关注的人

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