一、Java基礎(chǔ)
https://juejin.im/post/6844903573763915783#heading-64
https://juejin.im/post/6844904079152381959#heading-49
二、Kotlin基礎(chǔ)
https://www.youkmi.cn/2019/10/27/kotlin-ti-mu-zheng-li/
Kotlin是谷歌強推的一個編程語言,2017年宣布作為官方開發(fā)語言,目前部分Android源碼、Lint規(guī)則、第三方框架(okhttp)等都采用kotlin,云集從2019年下半年已經(jīng)對新業(yè)務(wù)全面實施kotlin開發(fā),老業(yè)務(wù)代碼暫時還未啟動重構(gòu);
集成注意事項:
1.主工程build.gradle配置,聲明對應(yīng)kotlin版本,以及引入插件;
2.完善了空判斷(? !!),簡化了bean的get和set方法,以及通過導(dǎo)入xml路徑,直接使用viewid,集成和實現(xiàn)接口都用符號冒號代替;
3.基本數(shù)據(jù)類型使用var可變,val不可變替換。不支持switch表達式,使用when替代,判斷支持不同數(shù)據(jù)類型,比如:字符串與整型混合使用。
4.java與kotlin通過注解的方式,比如@JvmStatic、@JvmOverloads重載等等;
5.大量的lambda表達式,代碼更加簡潔;
6.高階函數(shù)、協(xié)程、內(nèi)聯(lián)類inline class、伴生對象,引入了let、apply、with、run函數(shù);
7.Compaion Object類似于Java 中使用類訪問靜態(tài)成員,提供靜態(tài)成員或方法場景,可以用作單例對象或替代頂層函數(shù)的功能;
三、Android知識點
App鑒權(quán)
基礎(chǔ)知識
重點關(guān)注:MVVM、組件化、插件化和自定義view、MVP框架
AIDL
設(shè)計模式
網(wǎng)絡(luò)基礎(chǔ)
AOP面向切面
支持快速點擊切片@SingleClick,支持設(shè)置快速點擊的時間間隔。
支持動態(tài)申請權(quán)限切片@Permission,支持自定義響應(yīng)動作。
支持主線程切片@MainThread。
支持IO線程切片@IOThread,支持多種線程池類型。
支持日志打印切片@DebugLog,支持自定義日志記錄方式。
支持內(nèi)存緩存切片@MemoryCache,支持設(shè)置緩存大小。
支持磁盤緩存切片@DiskCache,支持自定義磁盤緩存,緩存有效時間等。
支持自動捕獲異常的攔截切片@Safe,支持設(shè)置自定義異常處理者。
支持自定義攔截切片@Intercept,支持自定義切片攔截。
兼容Kotlin語法。支持androidx。
ORMLite
Lottie動畫
FFmpeg
加固原理
混淆原理
APM
簽名機制
適配器模式:GridView、ListView的Adapter;
建造者(builder)模式:AlertDialog.Builder;
觀察者模式:ListView的adapter.notifyDataSetChanged;
責(zé)任鏈模式:View的事件分發(fā);
組件化:
業(yè)務(wù)組件獨立Module,比如:主工程、商品、營銷、用戶、訂單、發(fā)現(xiàn)和社群等;
功能組件:BaseActivity、工具類、推送、埋點等
中轉(zhuǎn)組件:放入業(yè)務(wù)/功能組件共用的邏輯,比如sp、sqlite、lib或aar等
跳轉(zhuǎn)通過[ARouter](https://blog.csdn.net/Alexwll/article/details/85466069);
如果多個app同時開發(fā),可以考慮將部分功能組件中臺化,比如:登錄、分享、工具等
四、框架原理
OkHttp
Glide
luban壓縮
淘寶vLayout-01
淘寶vLayout-02
五、Webview優(yōu)化
預(yù)加載和離線
1.Webview 預(yù)加載就是把webview內(nèi)核初始化時間提前,使用時候就不用占用初始化時間了;
2.緩存控制 利用 okhttp代理webview的資源請求,之后靜態(tài)資源請求使用的是 okhttp的磁盤緩存,不需要請求網(wǎng)絡(luò)速度更快,不適用webview自帶的緩存原因是 緩存大小和過期時間無法自主控制,這樣可以讓webview達到離線;
3.緩存的控制時間可以分2種 1種自己控制http協(xié)議緩存時間,2服務(wù)端通過請求頭部下發(fā)控制時間,你把 http協(xié)議緩存控制原理 這個要了解下(重點)。
六、svn和git版本管理
https://www.cnblogs.com/Sungeek/p/9152223.html
七、性能優(yōu)化
LeakCanary-01
LeakCanary-02
Bugly集成與使用
云集bugly處理:Crash包含OOM、空指針、窗體泄露等;卡頓包含自定義view、sp使用不當、主線程操作數(shù)據(jù)庫等。
Jenkins打包
MTA移動分析
圖片壓縮
八、SDK接入
1.極光-手機號一鍵登錄
2.商湯-金融人臉、身份證和銀行卡識別
3.Fido-指紋登錄
4.騰訊直播-業(yè)務(wù)層對接
直播sdk擴展知識:主要負責(zé)業(yè)務(wù)層開發(fā)(直播列表、推送商品等);
可封裝消息、推拉流兩大功能塊;同一時間消息發(fā)送的閾值,比如:1s500條,若出現(xiàn)1000條則只展示前500條,也可以把優(yōu)先級低消息過濾掉;
要確保直播不出現(xiàn)卡頓,可以監(jiān)控網(wǎng)絡(luò)狀況和FPS,低于下限給用戶提示,喚起重連;
5.Lint靜態(tài)代碼掃描
http://www.itdecent.cn/p/a7055eb01b6a
九、熱修復(fù)
Tinker原理
classLoader 加載外部apk文件 把dexElement中的熱修復(fù)的class文件插入前面,類加載器優(yōu)先加載修復(fù)的class就不會加載后面的了,還有雙親委派機制雙親委派機制。
微信Tinker,冷啟動修復(fù),相對即時修復(fù)范圍更廣,支持動態(tài)下發(fā)代碼、So 庫以及資源,讓應(yīng)用能夠在不需要重新安裝的情況下實現(xiàn)更新。
存在的問題:
1、Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大組件;
2、由于Google Play的開發(fā)者條款限制,不建議在GP渠道動態(tài)更新代碼;
3、在Android N上,補丁對應(yīng)用啟動時間有輕微的影響;
4、不支持部分三星android-21機型,加載補丁時會主動拋“TinkerRuntimeException:checkDexInstall failed”;
5、對于資源替換,不支持修改remoteView。例如transition動畫,notification icon以及桌面圖標。
集成注意事項:
1、官網(wǎng)注冊,創(chuàng)建一個應(yīng)用,配置appKey
2、保留一個發(fā)版基本包
3、打修復(fù)包,修改tinkerpatch.gradle對應(yīng)配置
4、默認是3個小時更新一次,若立即更新則調(diào)用TinkerPatch.with().fetchPatchUpdate(true)
十、開發(fā)管理經(jīng)驗
1.每天早上站立會,同步開發(fā)進度,跟進異常情況;
2.雙周迭代需求排期和評審,以及一些需求的技術(shù)難點預(yù)研;
3.每周二下午例會,小組人力資源/重點項目進度/現(xiàn)網(wǎng)問題/大佬問題同步公司和部門重要事項;
4.線上BUG復(fù)盤,持續(xù)跟進復(fù)盤結(jié)論,直至落地;
5.小組成員能力培養(yǎng),輸出季度優(yōu)化清單,以及配合部門推進OKR;
6.小組的團建,以及周邊部門的協(xié)調(diào);
7.節(jié)假日例行值班,關(guān)注工作群異常,及時跟進解決。
騰訊互聯(lián)網(wǎng)人才培訓(xùn)
第一性原理培訓(xùn)
敏捷開發(fā)培訓(xùn)--垂直小組/[敏捷開發(fā)](https://blog.csdn.net/cui130/article/details/84863151)
項目管理平臺:騰訊的TAPD