私藏系列:你或許從未聽過的20個安卓開發(fā)工具
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
本文收錄了筆者在日常工作中發(fā)現(xiàn)的許多寶藏工具和項目,它們能幫助你開發(fā)安卓應(yīng)用,可供大家參考。
1. AinD: Docker中的Android (Anbox)
通過在Docker中嵌套Anbox容器,AinD在Docker中啟動安卓應(yīng)用。
與類似的基于VM(虛擬機)的項目不同,AinD不需要嵌套虛擬的支持也可以在IaaS實例上運行。其目的是:
- 防信息竊取
- (通過云)實現(xiàn)iOS和Windows平板電腦對安卓的兼容
2. Booster
Booster是一個非常有趣的工具,它容易使用、量級輕、強大且可擴展,是一種專為移動應(yīng)用設(shè)計的質(zhì)量優(yōu)化工具包。其首要目標(biāo)是解決隨應(yīng)用復(fù)雜性增加而出現(xiàn)的質(zhì)量問題,如性能、穩(wěn)定性和安裝包大小。
Booster整合了性能檢測、多線程優(yōu)化、資源索引內(nèi)聯(lián)、冗余資源減少、資源壓縮、系統(tǒng)漏洞修復(fù)等模塊。它可將應(yīng)用程序的穩(wěn)定性提升15%~25%,而安裝包大小則可減少1MB~10MB。該優(yōu)化器基于Apache 2.0許可協(xié)議編寫,且?guī)в谐錾拈_發(fā)文檔。
3. Shake
Shake是檢測漏洞的最佳工具之一,它檢查用戶操作步驟以重現(xiàn)漏洞并收集漏洞截圖和視頻。該工具能幫助你更便捷地處理測試項目或生產(chǎn)過程中的所有漏洞,值得一用。
正如圖中那樣,你可以搖動設(shè)備,此時會彈出一個用于上傳錯誤報告的模板,用戶可以標(biāo)記漏洞,模糊處理機密數(shù)據(jù)并描述問題,然后將其返還給開發(fā)者團隊。其開發(fā)文檔中有簡潔清晰的安裝方法,其還附有在線演示,用來從內(nèi)部查看該工具的工作原理。
4. Scabbard
Scabbard將Dagger2依賴圖可視化來幫助人們理解。
Scabbard將入口點、依賴圖、部件關(guān)系和作用域可視化,用戶不費吹灰之力就能將其整合在項目中。該工具可以與Gradle、Android Studio或IntelliJ完美集成,通過gutter圖標(biāo)可直接從源代碼輕松地查看部件或子部件。它的開發(fā)文檔十分優(yōu)質(zhì),內(nèi)含許多實例和建議,所有內(nèi)容都在Apache 2.0許可下發(fā)布。
5. Can I Drop Jetifier?
眾所周知,有時從舊的支持庫遷到AndroidX并非易事,對于大型遺留項目更是如此。Jetifier的使用是左右遷移成功與否的關(guān)鍵(Jetifier將仍然基于舊組件的依賴關(guān)系轉(zhuǎn)化為操作AndroidX類),但這同時也會增加開發(fā)時間。
由于越來越多的庫被遷移到AndroidX,總有一天這一工具將不再為人所需。如果已經(jīng)出現(xiàn)新版本,這個插件可以鑒別你正在使用的庫中需要遷移到AndroidX或需要被替換的庫。
其開發(fā)文檔清晰易懂,這一項目在Apache 2.0許可下發(fā)布。推薦指數(shù)五顆星!
6. ADB Event Mirror
你可以使用ADB Event Mirror將一臺設(shè)備的觸摸/按鍵/按鈕事件實時鏡像復(fù)制到另一臺或其他多臺設(shè)備。
該腳本的目的不在于標(biāo)準(zhǔn)化分辨率、密度、方向或布局差異。在具備完全相同配置的模擬器上運行時,它能實現(xiàn)最佳效果。該工具允許你同時在不同類型的模擬器上測試應(yīng)用程序。
7. Android Emulator Container Scripts
Android EmulatorContainer Scripts是一組小型腳本,用于在容器中為各種系統(tǒng)(如Docker)運行模擬器以供外部使用。該腳本同時兼容Python 2和3。這一repo命令深受歡迎,且支持在遠(yuǎn)程計算機上運行多個模擬器。項目在Apache 2.0許可下發(fā)行,具有出色的開發(fā)文檔。
8. Autoplay
Autoplay是一個將安卓工件發(fā)布到Google Play上的Gradle插件。
你可以把它當(dāng)成Gradle PlayPublisher或Fastlane的簡易替代品,你能以apk或App Bundle的形式來發(fā)布應(yīng)用程序。
- 針對CI/CD(持續(xù)集成/持續(xù)部署)使用進行了優(yōu)化
- 開發(fā)者友好型
- 可靠穩(wěn)定,永不過時
該項目有1.3.0版本的出色開發(fā)文檔,在Apache 2.0許可下發(fā)布。
9. Gradle Static Analysis Plugin
Gradle Staticanalysis Plugin是所有實用的靜態(tài)代碼分析工具的一大替代品,如:
- Checkstyle
- PMD
- FindBugs [棄用] [在Gradle 6.0中移除]
- SpotBugs
- Detekt
- AndroidLint
- KtLint
你可以輕松地將這些工具包含到代碼庫中,無需親自設(shè)置這些工具。該插件在Apache 2.0許可下發(fā)布,含優(yōu)質(zhì)開發(fā)文檔,甚至還有一個樣例項目。
10. Android Util Code
Android Util Code是一個強大且易上手的安卓庫。它封裝了安卓開發(fā)中常用的功能,具有完整的演示和單元測試。通過使用它封裝的API(應(yīng)用程序接口),可以大大提高開發(fā)效率。該項目主要包括兩個模塊,分別為utilcode(主要應(yīng)用于開發(fā))和subutil(極少用于開發(fā)但簡化了主模塊)。
其代碼版本為1.29.0,在Apache 2.0許可下發(fā)布。
11. Hijckr
Hijckr參與安卓的布局初始化過程,并將命名元素重定向到其他類。這個工具十分有趣。例如,對于包含TextView的布局文件,安卓通常會加載Android.widget.TextView,但我們也可以反其道而行之,通過劫持xml標(biāo)簽來加載com.myapp.TextView。
該工具的README文檔十分全面,可幫助用戶快速上手使用這個完全由Java編寫的工具。
12. Roomigrant
Roomigrant是一個幫助庫,能夠使用編譯時代碼生成來自動創(chuàng)建Android Room庫遷移。它使用由Room庫生成的方案文件并基于它們之間的差異生成遷移,這意味著Room結(jié)構(gòu)的生成必須在build.gradle文件中啟用,README文檔對其進行了詳細(xì)描述。
該項目在MIT許可下發(fā)布,版本為0.1.7。
13. RoomExplorer
將數(shù)據(jù)庫遷至Room后,我們可以在查看器中檢查這一數(shù)據(jù)庫。RoomExplorer允許以表格格式查看所有的表格數(shù)據(jù),還支持在表格中插入、更新或刪除行,以及刪除并釋放表格空間等等。
該工具有出色的開發(fā)文檔,在Apache 2.0許可下發(fā)布。
14. android-framer
Android-framer工具支持在Google Play屏幕截圖上添加邊框和文字主題,其靈感來自fastlane frameit。
該工具用Python和ImageMagick構(gòu)建,你可以配置所用的邊框(背景),比如Facebook Design,同時也可以調(diào)整字體字號和邊框大小等等。它在Apache 2.0許可下發(fā)布。
15. Dependency Tree Diff
Dependncy TreeDiff是“一種為輸出Gradle的依賴任務(wù)而開發(fā)的智能差異工具,總是顯示通往根依賴的路徑。”
你可以使用brew或只用jar文件來安裝這一工具,它在Apache 2.0許可下發(fā)布。
16. Gradle Doctor
Gradle Doctor是一個用于掃描Gradle構(gòu)建的插件。它包含針對構(gòu)建速度問題的可配置警告,測定在Dagger注釋處理器上花費的時間,確保JAVA_HOME得到設(shè)置并與IDE(集成開發(fā)環(huán)境)的JAVA_HOME相匹配。可以便捷地使用該工具來禁用測試緩存,并在找到空src目錄時停止構(gòu)建(因為空src目錄會導(dǎo)致緩存丟失)等等。
它附有詳盡的開發(fā)文檔,并在Apache 2.0許可下發(fā)布。
17. Globally Dynamic
Globally Dynamic是“一套旨在普及Dynamic Delivery(動態(tài)交付)的工具,使其不受內(nèi)置的應(yīng)用商店或發(fā)行平臺的制約,并提供獨立的統(tǒng)一安卓客戶端API和流暢的開發(fā)人員體驗。”
目前支持:
- Google Play Store (播放功能交付)
- 華為 App Gallery(動態(tài)能力)
- 與GloballyDynamic Server合作的大多數(shù)其他平臺(如:亞馬遜應(yīng)用商店、三星Galaxy商店和Firebase AppDistribution,也支持在本地開發(fā)期間進行操作。)
筆者建議閱讀你README文檔以了解更多細(xì)節(jié)。它基于Apache 2.0許可發(fā)布。
18. Dagger Browser
Dagger Browser是另一種工具(漸進式網(wǎng)頁應(yīng)用),能夠輕松導(dǎo)航項目Dagger圖。
圖形數(shù)據(jù)由Dagger SPI插件填充,此瀏覽器由CRA(create-react-app,一種用以創(chuàng)建網(wǎng)頁應(yīng)用程序的工具)和Typescript創(chuàng)建。還有一個示例應(yīng)用程序展示該工具的工作原理。所有內(nèi)容都在BSD-3-Clause許可下發(fā)布。
19. Wormhole
Wormhole是“一個前后均兼容的字節(jié)碼重寫器,將未來可能出現(xiàn)的API添加到android.jar。它可以對android.jar進行字節(jié)碼重寫,使其對D8和R8的API都可用。”
Wormhole保證向后兼容最新的API。比如:“在Android R中有Java 9的新方法,如List.of。由于D8和R8的存在,這些方法并不是API 30獨有的,而可以兼容至API 1。D8和R8中有一系列針對android.jar中尚未存在的API的字節(jié)碼重寫方法。該項目讓用戶可以立即使用這些API,省去漫長的等待。”
20. MNML
MNML讀作“minimal”,是適用于安卓的免費簡單的錄屏軟件。
有許多應(yīng)用程序和工具可以錄屏,如今幾乎所有新設(shè)備都有內(nèi)置的屏幕錄制功能,但如果你想要了解如何開發(fā)實現(xiàn)這類錄屏應(yīng)用,這個項目就是一個很好的學(xué)習(xí)資源。該項目在Apache 2.0許可下發(fā)行。
希望筆者分享的工具能夠讓你收獲靈感與啟發(fā)。