Box —— 我的開發助手

秉心說TM發表於2019-03-14

專案地址:Box

為什麼要做 Box ? 其實源於開發過程中一些很小的需求,也許並不常見,但是每次碰到都要費一些功夫。所以想著寫一個小應用,整合一些常用功能,給開發帶來一些便利。下面這些小需求,你也遇到過嗎?

如何檢視當前 Activity ?

看到別人優秀的 UI 介面想借鑑一下如何實現?看到別人的應用實現了自己不知道如何實現的功能?反編譯了別人的 apk 卻不知道去哪找程式碼?經常做逆向的同學應該經常碰到這些問題。首先,你肯定得找到當前 Activity 的名稱,才能順路找到相應的程式碼。那麼,如何檢視當前 Activity 的名稱呢?常見的做法是通過 adb 命令:

adb shell dumpsys activity activities | grep mFocusedActivity
複製程式碼

執行結果如下:

Box —— 我的開發助手

無奈記性不好,經常忘記命令,每次都得去搜一下,順便推薦一個 adb 命令集合。再來看一下 Box 中這一功能是什麼效果:

Box —— 我的開發助手

通過懸浮窗實時顯示當前 Activity ,簡單便捷。實現原理也很簡單,通過 無障礙服務 監聽視窗變化並獲取當前 Activity 名稱。懸浮窗沒有自己造輪子了,使用了開源專案 FloatWindow。有段時間沒更新了,順便也改了幾個 bug。

如何獲取已安裝應用的 Apk 檔案 ?

某天突然看上了手機裡的某個 App,想拖到 jadx 裡面看一看,如何快速的獲取到安裝包檔案呢?我們都知道對於已安裝的應用,系統都備份了安裝包,儲存在 /data/app/[packageName] 目錄下,一般檔名為 base.apk。如果是具有 root 許可權的手機,我們可以直接拿到檔案。對於非 root 手機,還是有讀許可權的,可以通過檔案 API 直接讀取。Box 中介面如下所示:

Box —— 我的開發助手

安裝包檔案會複製到手機根目錄 /Box/apk/應用名 資料夾下。

如何快速檢視 AndroidManifest.xml 檔案 ?

AndroidManifest.xml 包含了應用的基本資訊,如何快速的檢視應用的清單檔案?之前有一個開源工具,AXmlPrinter.jar,可以直接解析安裝包中的二進位制清單檔案。本想直接把 jar 包拿過來用,可是用的不是那麼隨心應手。加上之前親手解析過 AndroidManifest.xml 檔案,詳見 Android逆向(一) —— AndroidManifest.xml 二進位制解析。索性就用了自己的程式碼,順便也修復了一些解析過程中遇到的 bug。具體效果如下:

Box —— 我的開發助手

Box —— 我的開發助手

其他

主要功能都在上面了,另外還加了一塊 本機資訊,包括內容如下:

  • 品牌、版本號、型號、主機板、製造商等
  • 螢幕、RAM、ROM、SDK 版本、Android 版本、ABIS 等
  • IMEI、MEID、SN、MAC 地址等

Box —— 我的開發助手

Box —— 我的開發助手

Box 使用 kotlin 開發,簡單的使用了 協程 來進行非同步任務,如複製 Apk 並更新進度等。介面設計很一般,實在是很為難我這麼一個理科生。圖片基本上都是 Android Studio 裡面自動生成的,logo 暫時還沒有,有合適的可以 push 一個。

第一個版本功能比較簡單,後面再遇到開發中的痛點需求,還會加進來,持續更新。有 bug 或者好的想法,歡迎 issuepr 砸過來!

專案原始碼: Box

文章首發微信公眾號: 秉心說 , 專注 Java 、 Android 原創知識分享,LeetCode 題解,歡迎關注!

Box —— 我的開發助手

相關文章