Android 高階延伸技術點,你能答出幾個?

2021-10-14 23:05:31 字數 2642 閱讀 8595

注意:單元測試不適合測試複雜的 ui 互動事件

少部分面試官可能會延伸,如 gradle 自動化測試、機型適配測試等

減少 dex 檔案大小

減少 lib 檔案大小

只需在 build.gradle 直接配置即可,ndk 配置同理

這裡以友盟統計為例

外掛程式: 相對於外掛程式化技術來說,就是要載入執行的apk 類檔案。

而熱修復則是從修復 bug 的角度出發,強調的是在不需要二次安裝應用的前提下修復已知的 bug。

類載入機制

外掛程式通訊:通過給外掛程式 apk 生成相應的 dexclassloader 便可以訪問其中的類,可分為單 dexclassloader 和多dexclassloader 兩種結構。

資源載入

注意:提供給各業務模組的基礎元件,需要根據具體情況拆分成 aar 或者 library,像登入,基礎網路層這樣較為穩定的元件,一般直接打包成 aar,減少編譯耗時。而像自定義 view 元件,由於隨著版本迭代會有較多變化,就直接以原始碼形式抽離成 library

跨元件通訊方案分析

此外,可以使用 androideventbus 其獨有的tag, 可以在開發時更容易定位傳送事件和接受事件的**, 如果以元件名來作為 tag 的字首進行分組, 也可以更好的統一管理和檢視每個元件的事件, 當然也不建議大家過多使用 eventbus。

如何管理過多的路由表?

arouter 路由原理

常見的元件化方案如下

其原理在於將分布在不同元件 module 中的某些類按照一定規則生成對映表(資料結構通常是 map,key 為乙個字串,value 為類或物件),然後在需要用到的時候從對映表中根據字串從對映表中取出類或物件,本質上是類的查詢

埋點則是在應用中特定的流程收集一些資訊,用來跟蹤應

用使用的狀況

視覺化埋點:通過視覺化工具(例如 mixpanel)配置採集節點,在 android 端自動解析配置並上報埋點資料,從而實現所謂的自動埋點無埋點:它並不是真正的不需要埋點,而是android 端自動採集全部事件並上報埋點資料,在後端資料計算時過濾出有用資料

android 中的 hook 機制,大致有兩個方式:

插樁是以靜態的方式修改第三方的**,也就是從編譯階段,對源**(中間**)進行編譯,而後重新打包,是靜態的篡改; 而hook則不需要再編譯階段修改第三方的原始碼或中間**,是在執行時通過反射的方式修改呼叫,是一種動態的篡改

v3 版本簽名塊也分成同樣的三部分,與 v2 不同的是在signerdata 部分,v3 新增了 attr 塊,其中是由更小的level 塊組成。每個 level 塊中可以儲存乙個證書資訊。前乙個 level 塊證書驗證下乙個 level 證書,以此類推。最後乙個 level 塊的證書,要符合 signerdata 中本身的證書,即用來簽名整個 apk 的公鑰所屬於的證書

android6.0 新特性

android7.0 新特性

android8.0(o)新特性

android9.0(p)新特性

android10.0(q)目前**的新特性

決定因素:值由子 view 的布局引數 layoutparams 和父容器的 measurespec 值共同決定。具體規則見下圖:

新型布局(視覺化拖拽控制項、編寫 xml **、**生成):

glide 的快取設計:通過(**快取,lru 演算法,bitmap 復用)對 resource 進行快取設計

glide 的完整載入過程:採用 engine 引擎類暴露了一系列方法供 request 操作

灰度更新

強制更新:

**增量更新: **

為了能夠幫助到大家更有效快速的切換至學習的狀態,少踩點坑,我把我之前學習的一些android 知識點筆記等進行了整理上傳至github專案位址中:

android高階應用

android activity service broadcaster三大元件之間互相呼叫 service實時向activity傳遞資料案例 android service獲取當前位置 gps 基站 四十七 實現呼叫android手機的拍照功能 四十六 android中的bitmap 四十五 an...

Android基礎 高階

android基礎 android核心元件之activity fragment簡介和使用例項 android核心元件之service 使用aidl實現程序間的通訊 android核心元件之broadcastreceiver android核心元件之contentprovider 一 初步學習 adn...

Android基礎 高階

基礎總結篇之一 activity生命週期 基礎總結篇之二 activity的四種launchmode 基礎總結篇之三 activity的task相關 基礎總結篇之四 service完全解析 基礎總結篇之五 broadcastreceiver應用詳解 基礎總結篇之六 contentprovider之讀...