如何为 Android Studio 创建“新项目”插件

Hec*_*tor 5 android intellij-plugin android-studio

我想开发一个出现在新建项目向导中的 Android Studio 插件。

我正在使用 Android Studio

Android Studio 3.4.2
Build #AI-183.6156.11.34.5692245, built on June 27, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.6
Run Code Online (Sandbox Code Playgroud)

标准 Android Studio 新建项目向导可通过以下方式访问

FILE > NEW > NEW PROJECT... > "CREATE NEW PROJECT" WIZARD
Run Code Online (Sandbox Code Playgroud)

显示的向导有五个选项卡

"Phone and Tablet", "Wear OS", "TV", "Android Auto", and "Android Things"
Run Code Online (Sandbox Code Playgroud)

我无法在“手机和平板电脑”窗口中添加其他项目或添加其他第六个选项卡。

我已经成功地向现有项目添加了额外的“活动”类型。

有可能达到我想要的结果吗?

还是“新项目”向导“锁定”仅供谷歌使用?

Gil*_*ian 2

老问题,但由于我也花了一段时间才找到答案,我也将其留在这里。现在您可以使用一个扩展点来添加您自己的向导。您需要执行以下操作:

  1. 创建 Jetbrains 插件项目(使用 Github 模板或类似的东西)。

  2. 在 resources/META-INF/plugin.xml 中添加以下扩展:

    <extensions defaultExtensionNs="com.android.tools.idea.wizard.template">
    <wizardTemplateProvider implementation="your.template.provider"/>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建模板提供程序类。

模板提供者可能是这样的:

class MyTemplateProvider: WizardTemplateProvider() {
      override fun getTemplates() = listOf(myTemplate)
}

val myTemplate = template {
    name = "My Template"
    description = "Foo"
    documentationUrl = "example.com"
    minApi = 21
    category = Category.Other
    formFactor = FormFactor.Mobile
    thumb = { Thumb(path = { <URL to an image> }) }
    screens = listOf(
        WizardUiContext.ActivityGallery,
        WizardUiContext.FragmentGallery,
        WizardUiContext.MenuEntry,
        WizardUiContext.NewProject,
        WizardUiContext.NewModule,
    )

    recipe = { data: TemplateData ->
        val config = data as ModuleTemplateData
        // TODO generate the template project
    }
}
Run Code Online (Sandbox Code Playgroud)