一椿浓、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是谷歌強(qiáng)推的一個(gè)編程語(yǔ)言,2017年宣布作為官方開(kāi)發(fā)語(yǔ)言臼婆,目前部分Android源碼、Lint規(guī)則疗疟、第三方框架(okhttp)等都采用kotlin署鸡,云集從2019年下半年已經(jīng)對(duì)新業(yè)務(wù)全面實(shí)施kotlin開(kāi)發(fā),老業(yè)務(wù)代碼暫時(shí)還未啟動(dòng)重構(gòu)绊诲;
集成注意事項(xiàng):
1.主工程build.gradle配置送粱,聲明對(duì)應(yīng)kotlin版本,以及引入插件掂之;
2.完善了空判斷(? !!)抗俄,簡(jiǎn)化了bean的get和set方法,以及通過(guò)導(dǎo)入xml路徑世舰,直接使用viewid动雹,集成和實(shí)現(xiàn)接口都用符號(hào)冒號(hào)代替;
3.基本數(shù)據(jù)類型使用var可變跟压,val不可變替換胰蝠。不支持switch表達(dá)式,使用when替代,判斷支持不同數(shù)據(jù)類型茸塞,比如:字符串與整型混合使用躲庄。
4.java與kotlin通過(guò)注解的方式,比如@JvmStatic翔横、@JvmOverloads重載等等读跷;
5.大量的lambda表達(dá)式,代碼更加簡(jiǎn)潔禾唁;
6.高階函數(shù)效览、協(xié)程、內(nèi)聯(lián)類inline class荡短、伴生對(duì)象丐枉,引入了let、apply掘托、with瘦锹、run函數(shù);
7.Compaion Object類似于Java 中使用類訪問(wèn)靜態(tài)成員闪盔,提供靜態(tài)成員或方法場(chǎng)景弯院,可以用作單例對(duì)象或替代頂層函數(shù)的功能;
三泪掀、Android知識(shí)點(diǎn)
App鑒權(quán)
基礎(chǔ)知識(shí)
重點(diǎn)關(guān)注:MVVM听绳、組件化、插件化和自定義view异赫、MVP框架
AIDL
設(shè)計(jì)模式
網(wǎng)絡(luò)基礎(chǔ)
AOP面向切面
支持快速點(diǎn)擊切片@SingleClick椅挣,支持設(shè)置快速點(diǎn)擊的時(shí)間間隔。
支持動(dòng)態(tài)申請(qǐng)權(quán)限切片@Permission塔拳,支持自定義響應(yīng)動(dòng)作鼠证。
支持主線程切片@MainThread。
支持IO線程切片@IOThread靠抑,支持多種線程池類型量九。
支持日志打印切片@DebugLog,支持自定義日志記錄方式颂碧。
支持內(nèi)存緩存切片@MemoryCache荠列,支持設(shè)置緩存大小。
支持磁盤緩存切片@DiskCache稚伍,支持自定義磁盤緩存弯予,緩存有效時(shí)間等戚宦。
支持自動(dòng)捕獲異常的攔截切片@Safe个曙,支持設(shè)置自定義異常處理者。
支持自定義攔截切片@Intercept,支持自定義切片攔截垦搬。
兼容Kotlin語(yǔ)法呼寸。支持androidx。
ORMLite
Lottie動(dòng)畫
FFmpeg
加固原理
混淆原理
APM
簽名機(jī)制
適配器模式:GridView猴贰、ListView的Adapter;
建造者(builder)模式:AlertDialog.Builder;
觀察者模式:ListView的adapter.notifyDataSetChanged;
責(zé)任鏈模式:View的事件分發(fā)对雪;
組件化:
業(yè)務(wù)組件獨(dú)立Module,比如:主工程米绕、商品瑟捣、營(yíng)銷、用戶栅干、訂單迈套、發(fā)現(xiàn)和社群等;
功能組件:BaseActivity碱鳞、工具類桑李、推送、埋點(diǎn)等
中轉(zhuǎn)組件:放入業(yè)務(wù)/功能組件共用的邏輯窿给,比如sp贵白、sqlite、lib或aar等
跳轉(zhuǎn)通過(guò)[ARouter](https://blog.csdn.net/Alexwll/article/details/85466069)崩泡;
如果多個(gè)app同時(shí)開(kāi)發(fā)禁荒,可以考慮將部分功能組件中臺(tái)化,比如:登錄允华、分享圈浇、工具等
四、框架原理
OkHttp
Glide
luban壓縮
淘寶vLayout-01
淘寶vLayout-02
五靴寂、Webview優(yōu)化
預(yù)加載和離線
1.Webview 預(yù)加載就是把webview內(nèi)核初始化時(shí)間提前磷蜀,使用時(shí)候就不用占用初始化時(shí)間了;
2.緩存控制 利用 okhttp代理webview的資源請(qǐng)求百炬,之后靜態(tài)資源請(qǐng)求使用的是 okhttp的磁盤緩存褐隆,不需要請(qǐng)求網(wǎng)絡(luò)速度更快,不適用webview自帶的緩存原因是 緩存大小和過(guò)期時(shí)間無(wú)法自主控制剖踊,這樣可以讓webview達(dá)到離線庶弃;
3.緩存的控制時(shí)間可以分2種 1種自己控制http協(xié)議緩存時(shí)間,2服務(wù)端通過(guò)請(qǐng)求頭部下發(fā)控制時(shí)間德澈,你把 http協(xié)議緩存控制原理 這個(gè)要了解下(重點(diǎn))歇攻。
六、svn和git版本管理
https://www.cnblogs.com/Sungeek/p/9152223.html
七梆造、性能優(yōu)化
LeakCanary-01
LeakCanary-02
Bugly集成與使用
云集bugly處理:Crash包含OOM缴守、空指針、窗體泄露等;卡頓包含自定義view屡穗、sp使用不當(dāng)贴捡、主線程操作數(shù)據(jù)庫(kù)等。
Jenkins打包
MTA移動(dòng)分析
圖片壓縮
八村砂、SDK接入
1.極光-手機(jī)號(hào)一鍵登錄
2.商湯-金融人臉烂斋、身份證和銀行卡識(shí)別
3.Fido-指紋登錄
4.騰訊直播-業(yè)務(wù)層對(duì)接
直播sdk擴(kuò)展知識(shí):主要負(fù)責(zé)業(yè)務(wù)層開(kāi)發(fā)(直播列表、推送商品等)础废;
可封裝消息汛骂、推拉流兩大功能塊;同一時(shí)間消息發(fā)送的閾值评腺,比如:1s500條香缺,若出現(xiàn)1000條則只展示前500條,也可以把優(yōu)先級(jí)低消息過(guò)濾掉歇僧;
要確保直播不出現(xiàn)卡頓图张,可以監(jiān)控網(wǎng)絡(luò)狀況和FPS,低于下限給用戶提示诈悍,喚起重連祸轮;
5.Lint靜態(tài)代碼掃描
http://www.reibang.com/p/a7055eb01b6a
九、熱修復(fù)
Tinker原理
classLoader 加載外部apk文件 把dexElement中的熱修復(fù)的class文件插入前面侥钳,類加載器優(yōu)先加載修復(fù)的class就不會(huì)加載后面的了适袜,還有雙親委派機(jī)制雙親委派機(jī)制。
微信Tinker舷夺,冷啟動(dòng)修復(fù)苦酱,相對(duì)即時(shí)修復(fù)范圍更廣,支持動(dòng)態(tài)下發(fā)代碼给猾、So 庫(kù)以及資源疫萤,讓應(yīng)用能夠在不需要重新安裝的情況下實(shí)現(xiàn)更新。
存在的問(wèn)題:
1敢伸、Tinker不支持修改AndroidManifest.xml扯饶,Tinker不支持新增四大組件;
2池颈、由于Google Play的開(kāi)發(fā)者條款限制尾序,不建議在GP渠道動(dòng)態(tài)更新代碼;
3躯砰、在Android N上每币,補(bǔ)丁對(duì)應(yīng)用啟動(dòng)時(shí)間有輕微的影響;
4琢歇、不支持部分三星android-21機(jī)型兰怠,加載補(bǔ)丁時(shí)會(huì)主動(dòng)拋“TinkerRuntimeException:checkDexInstall failed”则北;
5、對(duì)于資源替換痕慢,不支持修改remoteView。例如transition動(dòng)畫涌矢,notification icon以及桌面圖標(biāo)掖举。
集成注意事項(xiàng):
1、官網(wǎng)注冊(cè)娜庇,創(chuàng)建一個(gè)應(yīng)用塔次,配置appKey
2、保留一個(gè)發(fā)版基本包
3名秀、打修復(fù)包励负,修改tinkerpatch.gradle對(duì)應(yīng)配置
4、默認(rèn)是3個(gè)小時(shí)更新一次匕得,若立即更新則調(diào)用TinkerPatch.with().fetchPatchUpdate(true)
十继榆、開(kāi)發(fā)管理經(jīng)驗(yàn)
1.每天早上站立會(huì),同步開(kāi)發(fā)進(jìn)度汁掠,跟進(jìn)異常情況略吨;
2.雙周迭代需求排期和評(píng)審,以及一些需求的技術(shù)難點(diǎn)預(yù)研考阱;
3.每周二下午例會(huì)翠忠,小組人力資源/重點(diǎn)項(xiàng)目進(jìn)度/現(xiàn)網(wǎng)問(wèn)題/大佬問(wèn)題同步公司和部門重要事項(xiàng);
4.線上BUG復(fù)盤乞榨,持續(xù)跟進(jìn)復(fù)盤結(jié)論秽之,直至落地;
5.小組成員能力培養(yǎng)吃既,輸出季度優(yōu)化清單考榨,以及配合部門推進(jìn)OKR;
6.小組的團(tuán)建鹦倚,以及周邊部門的協(xié)調(diào)董虱;
7.節(jié)假日例行值班,關(guān)注工作群異常申鱼,及時(shí)跟進(jìn)解決愤诱。
騰訊互聯(lián)網(wǎng)人才培訓(xùn)
第一性原理培訓(xùn)
敏捷開(kāi)發(fā)培訓(xùn)--垂直小組/[敏捷開(kāi)發(fā)](https://blog.csdn.net/cui130/article/details/84863151)
項(xiàng)目管理平臺(tái):騰訊的TAPD