1.开发工具
Android Studio
Gradle 构建
1.Gradle 版本配置和版本升级,gradle 采用wrapper方式。可以做到每个项目独自使用gradle版本。gradle/wrapper/gradle-wrapper.properties并修改distributionUrl=https://services.gradle.org/distributions/gradle-3.0-all.zip到你想升级的版本。
2.构建模块化项目配置org.gradle.parallel=true
3.配置签名信息
4.设置第三方maven 地址
5.Gradle 拆分及引用 apply from:"../resource/config.gradle"
6.全局变量定义及引用
7.AndroidManifest占位符,BuildConfig以及资源配置
8.aar本地库依赖
Android sdk 编译版本,support,主题
1.compileSdkVersion:编译版本,控制可以使用的 API 。不会被包含到 APK 中,minSdkVersion :最低兼容版本,targetSdkVersion:应用运行时使用的版本,即使使用了高版本API也不会生效。
2.主题Hoho Theme:4.0之前。在4.0之后Android推出了Material Design的概念
3.v4 v7 v13
1)support-v4 : 该系列包用在API Level 4(即Android 1.6)或者更高版本以上。在开发中,默认都会使用到这个包。
2)support-v7 : 该系列包是为了考虑在API level 7(Android 2.1)及以上使用高版本效果而设计的,v7包含了v4的所有效果(v7中包含v4包的,即v7依赖于v4),v7当中支持了很多新的效果,最新的版本中还支持了Material Design的多种新的布局和空间。比如说:RecyclerView、TabLayout、ToolBar、CardView等等新的包。
3)support-v13 : 该兼容包系列主要是为了兼容API level 13(Android 3.2)以上的,是为了针对于平板兼容开发的,由于平板屏幕较大,因此该系列增强的对Fragment效果的支持,使得Fragment能够在平板的各个版中兼容(一般手机开发者不用该包)。
4)v14(兼容4.0及以上)
5)v17(兼容4.2及以上)主要是为了支持电视设备,并为电视设备提供了一系列的组件。
2.项目架构
App应用
扩展功能模块
功能库Library Common Library 工具库
3.View 的绘制
View的绘制流程&Activity的生命周期。在ActivityThread中,通过attache初始化window,将decorview添加进去。创建viewRootImpl对象,view 的绘制流程首先开始于ViewRootImpl的performTraversals方法。经过三大过程。Measure、layout、draw。而在Activity时通过onCreate()方法中调用setContentView();
setContentView 的源码分析和SnackBar 分析
View和ViewGroup的绘制原理源码分析。
4.事件分发
涉及分发及核心
么整个事件流向应该是从Activity---->ViewGroup--->View 从上往下调用dispatchTouchEvent方法,再由View--->ViewGroup--->Activity从下往上调用onTouchEvent方法。
5.动画框架
逐帧动画
补间动画
属性动画
(1)ValueAnimator:包含了属性动画的核心功能,动画时间,开始和结束属性值计算方法等,这个类也是属性动画的基类。
(2)ObjectAnimator:继承自ValueAnimator,其实如果要改变一个事物的某个属性变化会比较经常用到这个方法。
(3)AnimationSet:用于组合多个动画的,可以设置要组合动画的时序关系。
(4)TypeEvalutors:都是翻译成估值器,其实就是计算下一个运动到的值的类(根据动画的开始和结束还有TimeInterpolation计算出当前时间的属性值)
(5)TimeInterplator:这个翻译都是插值器,他是一个描述运动变化的方式,如匀速运动,加速运动或者先加速后减速等,他有很多子类,待会会介绍。
(6)ViewPropertyAnimator:这个类其实就是对View做属性动画的一个简略版,有些情况用到这个会简单很多。
6.Handler机制
1)Handler,MessageQueue,与Looper三者关系分析
2)HandlerThread源码分析
3)IntentService源码分析
4)Handler常见应用场景和常见问题分析
7.Binder机制
Binder是一种跨进程的通信方式;
从Android Framework层来说,Binder是ServiceManager连接各种Manager和相应ManagerService的桥梁;
8.流行框架源码分析
1)EventBus3.0源码解析
2)AsynTask源码分析
3)编译期注解的使用例子分析
4)Butterknife源码分析(一)
5)Butterknife源码分析(二)
6)多进程的sharedprefrence解决方案DPreference
7)Volley源码解析
8)OkHttp源码分析
9)Builder建造者设计模式
10)Retrofit2源码解析
11)Observer观察者设计模式
12)责任链设计模式
13)Strategy策略模式
14)Decorator装饰模式
15)GreenDao3.0数据库
9.性能优化
1)冷启动优化
1.1.APP启动分析工具(TraceView,Systrace)
1.2.布局优化(扁平化,Merge的使用,ViewStub的使用)
1.3.APP启动速度优化实例解析
1.4.各种布局的性能对比(LinerLayout,RelativeLayout)
2)内存优化
2.1.LeakCanary原理分析
2.2.Android DiskLruCache 源码解析 硬盘缓存的绝佳方案[转]
2.3.LruCache源码分析
2.4.内存泄漏的一些坑
2.5.MAT内存泄漏分析(一)
2.6.MAT内存泄漏分析(二)
3)网络优化
4)图片压缩性能优化
5)数据传输性能优化
6)减小APK体积
7)渲染优化
7.1.UI卡顿原理分析
7.2.UI卡顿检测分析
7.3.BlockCanary原理分析
7.4.卡顿优化实例解析
8)电量优化
8.1.APP耗电分析方法与工具(第三方,Google官方Battery Historian)
8.2.Android Doze源码分析
8.3.AlarmManager研究 [转]
8.4.在Android Lollipop中使用JobScheduler
9)Android ANR在线监控原理
10)AndroidGodEye解析之帧率(fps)
11)AndroidGodEye解析之流畅度(sm)
10.网络编程
1.TCP问题分析
2.OkHttp源码分析
3.网络传输数据加密策略(对称加密AES,DES,非对称加密RSA)
4.二进制协议(mqtt协议),协议编解码(tlv编解码)
5.Java Socket编程(IO,NIO)
6.Java多线程编程(队列,同步锁,线程池)
11.FrameWork层源码的分析
1)应用程序内Activity的启动流程
2)startService的流程分析
3 ) 注册广播接收器的源码分析
4)广播发送过程源码解析
5)广播处理过程源码解析
6)AssetManager加载资源过程
7)ClassLoader及dex加载过程
8)插件化框架VirtualApk之初始化
9)插件化框架VirtualApk之插件加载
10)插件化框架VirtualApk之Activity启动
11)插件化框架VirtualApk之Service管理
12)热修复框架AndFix完全解析
13)InstantRun源码分析