分析Android應用使用的技術框架和開源庫

App應用本質上是一個apk包, 即一個zip包, 可以直接顯示其中的內容. 通過apk文件, 我們可以獲知apk的版本信息, so庫和第三方庫, 並瞭解一些主流公司的應用框架. 分析工具主要是ApkTool和ClassyShark, 本人比較喜歡Shark工具. 我使用ClassyShark分析一下美團的框架, 也可以按照這個原理, 分析其他App的基本架構.

Shark

讓我們看看, 有什麼好玩且有用的架構信息?

1 框架

框架

美團的編譯版本非常新, 緊跟時代, 23版本(Android 6.0).

但是TargetSdkVersion仍然是22版本(Android 5.1), 推薦使用5.1.

最低版本是16(Android 4.1), 4.1以下的手機無法運行.

使用MultiDex, 而且竟然有三個, 說明方法非常之多, 可能引入了大量第三方庫.

2 方法



方法

文件非常之多, 共有9萬多個, 使用了大量的主流開源庫, 非常易於管理.

我來介紹一下這些庫, 不認識的朋友最好學習一下, 這些都是非常流行的開源庫.

2.1 com

sankuai, 美團的核心類;

xiaomi, 小米推送(xiaomi);

squareup, Squareup的EventBus(otto), okhttp, picasso;

readystatesoftware, 狀態欄沉浸效果庫;

dianping, 大衆點評, 已經合併一家, 東西也得用;

baidu, 百度地圖;

viewpagerindicator, viewpager的滾動效果, 早期實現toolbar效果的方式;

weibo, 新浪微博;

fasterxml, 即jackson, json解析庫;

iflytek, 科大訊飛的語音集成;

flurry, 統計庫;

actionbarsherlock, actionBar的Tab效果, 和viewpagerindicator一起用.

meituan, 美團的核心類;

alipay, 支付寶;

handmark, 下拉刷新;

ms, Square的TextView文字擴展庫, ExpandableTextView;

facebook, 圖片處理庫, 美團有大量的圖片需求;

google, Gson解析庫, ZXing二維碼識別庫, Dagger依賴注入;

unionpay, 銀聯支付;

tencent, 騰訊的QQ和微信;

ta, utdid2, 消息推送;

huawei, 華爲手機的推送機制;

umpay, 聯動優勢支付;

amap, 高德地圖;

nineoldandroids, ListView項的左右刪除;

sina, 新浪登錄;

2.2 其他

其他

de.greenrobot, EventBus, 又一個, 看來代碼開發還很混亂, 沒有統一;

retrofit, 網絡庫, 2.x版本, 升級很及時;

javax, java註釋, 配合dagger2使用;

org, apache的一些庫;

rx, rxjava異步請求處理;

okio, square的存儲數據讀寫庫;

uk, photoview實現圖片放大縮小功能;

android, 這個纔是android提供的支持庫;

bolts, 異步task關聯庫.

roboguice, Google Guice, Google的依賴注入庫, 和Dagger2重複;

net, lingala, 處理zip壓縮的庫.

3. 總結

美團是一個技術非常Open的公司, 使用主流的開源框架, 減少開發成本.

這些開源庫, 我也均有涉獵, 都是非常優秀的庫, 不瞭解的朋友可以學習一下.

雖然方法很多, 但是使用開源庫, 會大大減少開發成本, 增強應用穩定性.

Dagger+Retrofit+RxJava的業內標配, 美團也有所涉獵, 非常不錯.

備註:

ClassyShark是查看Apk信息的軟件, 功能非常強大, 省去反編譯的步驟. 主要功能: 查看MultiDex的dex信息, 使用的NativeLibrary, 類和方法的數量統計.

通過分析App的開源庫, 是不是感覺架構其實也不是那麼難, 多涉獵些東西, 使用起來纔會得心應手. 武器庫裏多些趁手的武器, 打仗纔會無往不勝.


方法

文件非常之多, 共有9萬多個, 使用了大量的主流開源庫, 非常易於管理.

我來介紹一下這些庫, 不認識的朋友最好學習一下, 這些都是非常流行的開源庫.

2.1 com

sankuai, 美團的核心類;

xiaomi, 小米推送(xiaomi);

squareup, Squareup的EventBus(otto), okhttp, picasso;

readystatesoftware, 狀態欄沉浸效果庫;

dianping, 大衆點評, 已經合併一家, 東西也得用;

baidu, 百度地圖;

viewpagerindicator, viewpager的滾動效果, 早期實現toolbar效果的方式;

weibo, 新浪微博;

fasterxml, 即jackson, json解析庫;

iflytek, 科大訊飛的語音集成;

flurry, 統計庫;

actionbarsherlock, actionBar的Tab效果, 和viewpagerindicator一起用.

meituan, 美團的核心類;

alipay, 支付寶;

handmark, 下拉刷新;

ms, Square的TextView文字擴展庫, ExpandableTextView;

facebook, 圖片處理庫, 美團有大量的圖片需求;

google, Gson解析庫, ZXing二維碼識別庫, Dagger依賴注入;

unionpay, 銀聯支付;

tencent, 騰訊的QQ和微信;

ta, utdid2, 消息推送;

huawei, 華爲手機的推送機制;

umpay, 聯動優勢支付;

amap, 高德地圖;

nineoldandroids, ListView項的左右刪除;

sina, 新浪登錄;

2.2 其他

其他

de.greenrobot, EventBus, 又一個, 看來代碼開發還很混亂, 沒有統一;

retrofit, 網絡庫, 2.x版本, 升級很及時;

javax, java註釋, 配合dagger2使用;

org, apache的一些庫;

rx, rxjava異步請求處理;

okio, square的存儲數據讀寫庫;

uk, photoview實現圖片放大縮小功能;

android, 這個纔是android提供的支持庫;

bolts, 異步task關聯庫.

roboguice, Google Guice, Google的依賴注入庫, 和Dagger2重複;

net, lingala, 處理zip壓縮的庫.

3. 總結

美團是一個技術非常Open的公司, 使用主流的開源框架, 減少開發成本.

這些開源庫, 我也均有涉獵, 都是非常優秀的庫, 不瞭解的朋友可以學習一下.

雖然方法很多, 但是使用開源庫, 會大大減少開發成本, 增強應用穩定性.

Dagger+Retrofit+RxJava的業內標配, 美團也有所涉獵, 非常不錯.

備註:

ClassyShark是查看Apk信息的軟件, 功能非常強大, 省去反編譯的步驟. 主要功能: 查看MultiDex的dex信息, 使用的NativeLibrary, 類和方法的數量統計.

通過分析App的開源庫, 是不是感覺架構其實也不是那麼難, 多涉獵些東西, 使用起來纔會得心應手. 武器庫裏多些趁手的武器, 打仗纔會無往不勝.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章