乾貨分享:分析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的開源庫, 是不是感覺架構其實也不是那麼難, 多涉獵些東西, 使用起來才會得心應手. 武器庫裡多些趁手的武器, 打仗才會無往不勝.
- 頂
- 0
- 踩
相關文章
- Android示例應用:開源框架Glide的使用Android框架IDE
- 使用雲原生應用和開源技術的創新攻略
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 乾貨 | 知識圖譜的技術與應用
- [乾貨分享]1000篇乾貨好文!量子技術——進階篇
- [乾貨分享]1000篇乾貨好文!量子技術——資訊篇
- CSDN社群乾貨技術分享:探尋技術進階之道(Python和AI)PythonAI
- 乾貨分享|Bitset 應用詳解
- 開源資料庫大會技術分享資料庫
- 分享剛出爐的基於Blazor技術的Web應用開發框架BlazorWeb框架
- [乾貨分享]1000篇乾貨好文!量子技術——專家觀點篇
- Android技術總監應該乾的那些事Android
- 技術乾貨 | 解鎖Redis 時間序列資料的應用Redis
- 技術乾貨 | WebRTC ADM 原始碼流程分析Web原始碼
- 純乾貨分享: 如何在 React 框架中使用SpreadJSReact框架JS
- 實用的Android開源庫Android
- Android技術分享| Bugly 應用升級自定義UIAndroidUI
- 技術乾貨 | NeCodeGen:基於 clang 的源到源轉譯工具
- 第1講回顧:聯邦學習技術介紹、應用和FATE開源框架聯邦學習框架
- 來了!閒魚技術團隊開源 Flutter 應用框架 Fish ReduxFlutter框架Redux
- 來了!閒魚技術團隊開源Flutter應用框架Fish ReduxFlutter框架Redux
- Android中使用AndroidTagGroup開源框架Android框架
- 乾貨 | H.265技術在短影片的應用及未來前景
- 乾貨分享:開發超市小程式應用需要具備哪些功能
- 最新Android開源庫、工具、開源專案整理分享Android
- 技術乾貨 | 基於標準 WebRTC 低延遲直播的開源實踐Web
- 【技術乾貨】Oracle資料庫漏洞掃描指南Oracle資料庫
- [Android開源框架]RxHttp使用說明Android框架HTTP
- 乾元通多卡聚合技術應用
- SSLO如何實現會話保持?技術乾貨線上分享會話
- 雙11在即,分享一些穩定性保障技術乾貨
- 乾貨分享:容器 PaaS 新技術架構下的運維實踐架構運維
- 乾貨分享:細說雙 11 直播背後的壓測保障技術
- 【技術乾貨+限時活動】openstack原理及在華為雲中的應用
- 分析技術在PMP中的應用
- 牆裂推薦:搜雲庫技術團隊,整理一年的技術乾貨
- 乾貨分享:六個知名的Go語言web框架GoWeb框架
- 技術乾貨| 如何在MongoDB中輕鬆使用GridFS?MongoDB
- 技術乾貨 | 反外掛技術的革新:如何有效應對 FPS 外掛的威脅