使用 Gradle 構建 Android Studio 插件

Rex_Tech 2021-08-15 13:37:20 阅读数:233

本文一共[544]字,预计阅读时长:1分钟~
使用 gradle android studio 插件

作為一個 Android 開發者,我每天都在使用 Android Studio。在編碼時我經常在思考:我能否讓 Android Studio 變得更加强大?例如,能否一鍵拉取庫模塊的源碼並將其引入構建?能否支持基於 AI 的更為智能的代碼提示?能否支持自定義的領域特定語言? 實際上,Android Studio 插件將另上述想法均變為現實。本文將詳細介紹如何使用 Gradle 開發 Android Studio 插件。如果你也是一個致力於提昇工作效率的 Android 開發者,那麼就繼續閱讀下去吧!

准備環境

開發 Android Studio 插件唯一需要准備的工具便是 Intellij IDEA(付費版本與社區版本均可)。你可以通過 Jetbrains 官網下載到 Intellij IDEA 的最新版本。本文將使用 Intellij IDEA Community Edition 2021.2 做演示。

創建工程

打開 Intellij IDEA,按照如下步驟創建工程:

  1. 點擊 File - New - Project...

1.png

  1. 在 New Project 頁,選擇 Gradle,並且勾選 Java 和 Intellij Platform Plugin,然後點擊 Next

2.png

  1. 填寫工程的名稱,點擊 Finish

3.png

配置工程

完成上一節後,Intellij IDEA 自動為我們創建了一個使用 Gradle 構建的 Intellij Plugin 項目。該項目的主要配置信息比特於根目錄的 build.gradle 中:

5.png 可以看到,Jetbrains 通過 Gradle 插件 org.jetbrains.intellij 完成了項目的配置。 該 Gradle 插件提供了豐富的配置項幫助開發者實現各種個性化的配置。你可以在其官方倉庫的 README 中查看完整的配置項

由於本文旨在幫助 Android 開發者開發針對 Android Studio 的插件,本節將主要介紹 Android Studio 插件的常用配置。

intellij 配置

Intellij 版本

build.gradle 中,默認的 Intellij 版本與創建工程的一致。而 Android Studio 對應的 Intellij 版本往往與之不同。 我們可以通過在 Android Studio 點擊 Android Studio - About Android Studio 查看其對應的 Intellij 版本:

4.png

例如上圖中標識的 Intellij 相關信息為:

Build #AI-203.7717.56.2031.7583922, built on July 27, 2021
複制代碼

其對應的 Intellij 版本便是 203.7717.56。 此外,Android Studio 是基於社區版本的 Intellij IDEA 的,故我們還需要添加 type 字段為 IC

...
intellij {
version = '203.7717.56'
type = 'IC'
}
...
複制代碼

添加 android plugin 依賴

Android Studio 實際上是通過為 Intellij IDEA 添加插件的形式提供了 Android 特定的特性。如果我們想要用到一些 Android Studio 提供的 Android 相關的開放接口,便需要添加對於該插件的依賴,從而可以在訪問到這些接口:

...
intellij {
version = '203.7717.56'
type = 'IC'
plugins = ['android']
}
...
複制代碼

runIde 配置

intellij 的 Gradle 插件提供了一個任務 runIde 用於幫助開發者在 IDE 中直接調試插件。Android 開發者可以將其中的 IDE 路徑配置為本地的 Android Studio 的路徑,從而直接在本地的 Android Studio 進行調試:

...
runIde {
ideDir = project.file('/Applications/Android Studio.app/Contents')
}
...
複制代碼

注意:runDir 的值需要為 File 類型(這一點 JetBrains 的文檔中並未提及)。

plugin.xml 配置

默認場景下,不同的插件運行於不同的 classloader 中,這樣不同的插件可以使用不同版本的相同的庫而不會相互影響。 但當開發者想要通過調用 android 插件的接口來獲取一些 Android 特定信息(例如 android gradle plugin 的版本)時,這樣的默認機制顯然會使得獲取信息失敗。 開發者可以通過在 plugin.xml 中聲明 depends 來使得當前插件與 depends 中聲明的插件運行於相同的 classloader 中。 對於 android 插件,我們可以在 plugin.xml 中聲明:

<idea-plugin>
...
<depends>org.jetbrains.android</depends>
...
</idea-plugin>
複制代碼

這樣,我們便可以在運行時獲得該插件提供的數據並正確調用該插件提供的方法。

構建與運行

使用 GUI

創建項目時,Intellij IDEA 便為我們自動創建好了對應的運行配置,如下圖:

6.png

可以通過點擊 Run 按鈕運行插件工程,Debug 按鈕調試插件工程。

點擊按鈕後,會默認啟動一個 Intellij IDEA 用以運行插件,如果你按照前文所屬配置了 runIde 任務的話,便會啟動本地的 Android Studio 運行插件。

使用命令行

通過右側 Gradle 面板的 Tasks 可以看到 intellij 組下面有一系列 IDE 插件相關的 Gradle 任務。 7.png 我們可以通過 ./gradlew buildPlugin 來構建插件工程,產物的默認輸出路徑為 /build/distributions。 我們可以通過 ./gradlew runPlugin 來運行插件工程。

更多

至此,我們便使用 Gradle 完成了插件工程的配置、構建和運行。關於如何開發 Android Studio 插件,你可以參考 Jetbrains 的官方文檔:Intellij Platform SDK。我也將在後續更新其中的有趣部分以及如何發布一個 Android Studio 插件。

關注我來了解更多吧。

版权声明:本文为[Rex_Tech]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815133652414v.html