ClassyShark——apk分析利器(轉載)

本文轉載自地址

http://w4lle.github.io/2016/02/15/ClassyShark——分析apk利器/

背景

對于一個感興趣的android非開源項目,通常使用逆向工程查看apk中的內容,俗稱反編譯。工具大概包括dex2jarJD-GUIapktoolprocyon,這些工具使用起來相對比較麻煩,如果我們只想知道該項目的基本框架、使用到哪些開源項目的話,那么就有些浪費時間。

對于一些大廠的項目,我們還比較關心的是用到了哪些新的框架和技術,對于新技術的流行程度和使用普遍程度有個比較好的把握,指導是否需要進行深度的使用學習。比如最近的比較流行的rxjava,熱更新技術等等。

ClassyShark

ClassyShark是一款可以查看Android可執(zhí)行文件的瀏覽工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的內容包括classes.dex文件,包、方法數(shù)量、類、字符串、使用的NativeLibrary等。

使用方法

打開apk文件java -jar ClassyShark.jar -open

將生成的所有數(shù)據(jù)導出到文本文件里java -jar ClassyShark.jar -dump

將指定類生成的文件導出到文本文件里java -jar ClassyShark.jar -dump

打開ClassyShark,在GUI界面展示某特定的類

java -jar ClassyShark.jar -open

檢測APKjava -jar ClassyShark.jar -inspect

導出所有的字符串?java -jar ClassyShark.jar -stringdump

具體使用

以美團項目為例,讓我們看看能得到什么有用的信息

java -jar ClassyShark.jar -open ~/Downloads/group-351_3-meituan_.apk


美團項目中使用了MultiDex,并且classes.dex文件有3個,說明方法數(shù)肯定非常多。

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

并且TargetSdkVersion也是23版本,緊跟技術方向。

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

而且有好多的so庫,有美團自己的,也有好多是第三方的庫。


可以看到9萬多個方法,怪不得會有3個classes.dex文件。

項目中應用了大量的第三方庫,并且一般都是主流的比較穩(wěn)定的開源庫。

我們來看下都用到了哪些庫

ZXing二維碼識別庫;

amap: 高德地圖;

PullToRefresh使用最廣的下拉刷新組件;

jackson, json解析庫;

NineOldAndroidsJake大神的android兼容庫

fresco,facebook出品的圖片處理庫,圖片加載節(jié)省很多內存,避免OOM。

RxJavajava響應式編程庫,再加上Square的Retrofit庫的支持,可以說未來就是rxjava的天下,目前市面上已經(jīng)有很多基于rxjava的項目;我們團隊也將基于rxjava來開發(fā)項目;

圈內最牛逼的開源公司Square,Jake大神所在的公司,可以毫不夸張的說,Square的開源項目使得Android開發(fā)提速了好幾年

okhttp網(wǎng)絡請求庫,已被官方采用;

retrofit非常牛逼的網(wǎng)絡請求庫,配合rxjava和lambda使用,代碼量減少90%;

otto事件總線;

picasso圖片加載庫;

dagger依賴注入框架;

ExpandableTextView可折疊的TextView

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

ViewPagerIndicator還是Jake大神的項目,viewpager的滾動控件;

actionbarsherlock依然是Jake大神的項目,Actionbar的適配庫,不過已經(jīng)過時了;

華為推送

SystemBarTint狀態(tài)欄沉浸效果庫

百度地圖

新浪微博

騰訊的QQ和微信

大眾點評,已經(jīng)合并一家,東西也得用;

umpay, 聯(lián)動優(yōu)勢支付;

支付寶;

andfix阿里出品的android熱更新框架;

flurry統(tǒng)計庫;

小米推送

http-request網(wǎng)絡請求庫;

EventBus事件總線庫;

PhotoView放大縮小的圖片處理庫;

roboguice依賴注入框架,類似Dagger;

zip4j處理zip壓縮的庫;

link異步task關聯(lián)庫,很像rxjava;

總結

從上面分析我們可見看出,美團是一個技術很開放的公司,對于框架的使用比較多,使用的基本都是主流的開發(fā)框架,減少開發(fā)成本,增強app的穩(wěn)定性和體驗,對于我們來說,有很大的借鑒意義。比如,目前都在試水的熱更新框架,美團選擇了阿里的andfix,那么該技術方案肯定是得到了美團團隊的驗證;另外,美團團隊也是比較潮流的,Retrofit+Rxjava的潮流趨勢已經(jīng)不可阻擋,美團已經(jīng)開始使用;但是,從項目引用庫中我們也可以看到一些不足之處;比如,同一種框架引用了多種第三方庫,如網(wǎng)絡庫(okhttp,http-request),圖片加載庫(fresco,picasso),事件總線(EventBus,?Otto),依賴注入(Dagger,roboguice),推送相關的庫等很多重復的庫,如果去掉重復的庫那么可以節(jié)省很多的編譯時間和apk包的大小;還有就是,我們基本可以斷定,美團團隊的內部并不能很好的統(tǒng)一,沒有有效的溝通,代碼開發(fā)很混亂,導致項目結構上的臃腫,重復庫的使用等等問題。

通過分析App的項目結構和引用庫的信息,我們大致掌握了該項目的架構,一些開發(fā)中的經(jīng)驗和不足,拓寬下開發(fā)視野,發(fā)現(xiàn)一些好用的開源庫,增強我們的武器,這些都是我們在開發(fā)中可以借鑒的東西。

參考

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

本文轉載自地址http://w4lle.github.io/2016/02/15/ClassyShark——分析apk利器/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,034評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,413評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,165評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,559評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,781評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,327評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,084評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,278評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,495評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,010評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,241評論 2 375

推薦閱讀更多精彩內容