一、Java基础
https://juejin.im/post/6844903573763915783#heading-64
https://juejin.im/post/6844904079152381959#heading-49
二、Kotlin基础
https://www.youkmi.cn/2019/10/27/kotlin-ti-mu-zheng-li/
Kotlin是谷歌强推的一个编程语言,2017年宣布作为官方开发语言,目前部分Android源码、Lint规则、第三方框架(okhttp)等都采用kotlin,云集从2019年下半年已经对新业务全面实施kotlin开发,老业务代码暂时还未启动重构;
集成注意事项:
1.主工程build.gradle配置,声明对应kotlin版本,以及引入插件;
2.完善了空判断(? !!),简化了bean的get和set方法,以及通过导入xml路径,直接使用viewid,集成和实现接口都用符号冒号代替;
3.基本数据类型使用var可变,val不可变替换。不支持switch表达式,使用when替代,判断支持不同数据类型,比如:字符串与整型混合使用。
4.java与kotlin通过注解的方式,比如@JvmStatic、@JvmOverloads重载等等;
5.大量的lambda表达式,代码更加简洁;
6.高阶函数、协程、内联类inline class、伴生对象,引入了let、apply、with、run函数;
7.Compaion Object类似于Java 中使用类访问静态成员,提供静态成员或方法场景,可以用作单例对象或替代顶层函数的功能;
三、Android知识点
App鉴权
基础知识
重点关注:MVVM、组件化、插件化和自定义view、MVP框架
AIDL
设计模式
网络基础
AOP面向切面
支持快速点击切片@SingleClick,支持设置快速点击的时间间隔。
支持动态申请权限切片@Permission,支持自定义响应动作。
支持主线程切片@MainThread。
支持IO线程切片@IOThread,支持多种线程池类型。
支持日志打印切片@DebugLog,支持自定义日志记录方式。
支持内存缓存切片@MemoryCache,支持设置缓存大小。
支持磁盘缓存切片@DiskCache,支持自定义磁盘缓存,缓存有效时间等。
支持自动捕获异常的拦截切片@Safe,支持设置自定义异常处理者。
支持自定义拦截切片@Intercept,支持自定义切片拦截。
兼容Kotlin语法。支持androidx。
ORMLite
Lottie动画
FFmpeg
加固原理
混淆原理
APM
签名机制
适配器模式:GridView、ListView的Adapter;
建造者(builder)模式:AlertDialog.Builder;
观察者模式:ListView的adapter.notifyDataSetChanged;
责任链模式:View的事件分发;
组件化:
业务组件独立Module,比如:主工程、商品、营销、用户、订单、发现和社群等;
功能组件:BaseActivity、工具类、推送、埋点等
中转组件:放入业务/功能组件共用的逻辑,比如sp、sqlite、lib或aar等
跳转通过[ARouter](https://blog.csdn.net/Alexwll/article/details/85466069);
如果多个app同时开发,可以考虑将部分功能组件中台化,比如:登录、分享、工具等
四、框架原理
OkHttp
Glide
luban压缩
淘宝vLayout-01
淘宝vLayout-02
五、Webview优化
预加载和离线
1.Webview 预加载就是把webview内核初始化时间提前,使用时候就不用占用初始化时间了;
2.缓存控制 利用 okhttp代理webview的资源请求,之后静态资源请求使用的是 okhttp的磁盘缓存,不需要请求网络速度更快,不适用webview自带的缓存原因是 缓存大小和过期时间无法自主控制,这样可以让webview达到离线;
3.缓存的控制时间可以分2种 1种自己控制http协议缓存时间,2服务端通过请求头部下发控制时间,你把 http协议缓存控制原理 这个要了解下(重点)。
六、svn和git版本管理
https://www.cnblogs.com/Sungeek/p/9152223.html
七、性能优化
LeakCanary-01
LeakCanary-02
Bugly集成与使用
云集bugly处理:Crash包含OOM、空指针、窗体泄露等;卡顿包含自定义view、sp使用不当、主线程操作数据库等。
Jenkins打包
MTA移动分析
图片压缩
八、SDK接入
1.极光-手机号一键登录
2.商汤-金融人脸、身份证和银行卡识别
3.Fido-指纹登录
4.腾讯直播-业务层对接
直播sdk扩展知识:主要负责业务层开发(直播列表、推送商品等);
可封装消息、推拉流两大功能块;同一时间消息发送的阈值,比如:1s500条,若出现1000条则只展示前500条,也可以把优先级低消息过滤掉;
要确保直播不出现卡顿,可以监控网络状况和FPS,低于下限给用户提示,唤起重连;
5.Lint静态代码扫描
https://www.jianshu.com/p/a7055eb01b6a
九、热修复
Tinker原理
classLoader 加载外部apk文件 把dexElement中的热修复的class文件插入前面,类加载器优先加载修复的class就不会加载后面的了,还有双亲委派机制双亲委派机制。
微信Tinker,冷启动修复,相对即时修复范围更广,支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。
存在的问题:
1、Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件;
2、由于Google Play的开发者条款限制,不建议在GP渠道动态更新代码;
3、在Android N上,补丁对应用启动时间有轻微的影响;
4、不支持部分三星android-21机型,加载补丁时会主动抛“TinkerRuntimeException:checkDexInstall failed”;
5、对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
集成注意事项:
1、官网注册,创建一个应用,配置appKey
2、保留一个发版基本包
3、打修复包,修改tinkerpatch.gradle对应配置
4、默认是3个小时更新一次,若立即更新则调用TinkerPatch.with().fetchPatchUpdate(true)
十、开发管理经验
1.每天早上站立会,同步开发进度,跟进异常情况;
2.双周迭代需求排期和评审,以及一些需求的技术难点预研;
3.每周二下午例会,小组人力资源/重点项目进度/现网问题/大佬问题同步公司和部门重要事项;
4.线上BUG复盘,持续跟进复盘结论,直至落地;
5.小组成员能力培养,输出季度优化清单,以及配合部门推进OKR;
6.小组的团建,以及周边部门的协调;
7.节假日例行值班,关注工作群异常,及时跟进解决。
腾讯互联网人才培训
第一性原理培训
敏捷开发培训--垂直小组/[敏捷开发](https://blog.csdn.net/cui130/article/details/84863151)
项目管理平台:腾讯的TAPD