# Android-MVP-Template **Repository Path**: duraemon/Android-MVP-Template ## Basic Information - **Project Name**: Android-MVP-Template - **Description**: 该项目是Android Studio的一个插件,用于一键创建Android的MVP模板的activity,layout等文件 https://blog.csdn.net/b992379702b/article/details/117810793 - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-13 - **Last Updated**: 2025-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # Android MVP Template ### 序 > 今天是在项目的时候频繁创建mvp架构的类,突然想到之前用到的AndroidLiveTemplate模板,于是就想写一个模板一键创建, 于是乎就去安装目录下寻找相关的模板文件夹,找了半天发现原来的那套freemarker的那套模板引擎被和谐了,网上翻阅了资料才发现 从Android4.1开始,Android live template的方式已经被Google和谐了,最近刚好是项目有这个需要,所以从新整理一下官方文档,也参考了一些网友的总结,再结合我项目MVP的架构,写了一个插件 这是一个AndroidStudio的插件,使用的是intellij官方开源的[intellij platform plugin template](https://github.com/JetBrains/intellij-platform-plugin-template) 我在这里就不对这个项目的结构以及详细的api进行讲解,如果有需要的小伙伴可以移步查询,本文档直接从项目源码进行改造成我们想要的template开始 ### 添加wizard-template.jar 首先我们下载了intellij官方模板之后,我们首先在项目的根目录下创建一个lib目录,然后在AndroidStudio的安装目录下面找到wizard-template.jar,windows电脑该文件在**Android Studio\plugins\android\lib\\** 目录下,MacOS系统的话在**Applications/Android Studio.app/Contents/plugins/android/lib/目录下**, 找到这个文件之后将其复制到新建的lib目录下面 ### 修改build.gradle.kts 添加依赖 ``` dependencies { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.17.1") compileOnly(files("lib/wizard-template.jar")) // 添加这一行 } ``` ### 修改gradle.properties 这里我们需要修改的地方分别是如下四处 | 字段 | 是否必须要修改 | 原始值 | 修改后的值 | | --- | --- | --- | --- | | pluginGroup | x | org.jetbrains.plugins.template | com.neo.mvp.template | | pluginName | x | IntelliJ Platform Plugin Template | MVP Template | | platformVersion | x | 0.10.1 | 0.0.1 | | platformPlugins | √ | | Kotlin,com.intellij.java,org.jetbrains.android, android, org.jetbrains.kotlin | 这其中有三个不是必须要修改的,不该也不影响后续的开发,不多还是建议结合自己项目修改一下这些配置 ### 修改setting.gradle.kts ``` rootProject.name = "MVP Template" ``` 接下来对项目代码的编写,如果你修改了gradle.properties里的所pluginGroup属性的值,接下来你需要对 **src/main/kotlin/** 目录下的包路径修改成对应的包名 ### 改造 ***listeners/MyProjectManagerListener.kt*** 管理着项目的生命周期的监听 ```kotlin internal class MyProjectManagerListener : ProjectManagerListener { private var projectInstance: Project? = null override fun projectOpened(project: Project) { projectInstance = project project.getService(MyProjectService::class.java) } override fun projectClosing(project: Project) { projectInstance = null super.projectClosing(project) } } ``` ### 接下来在src/main/kotlin目录下创建other,其他包和文件的目录结构如下 ``` ├──src ├ └──main ├ └──kotlin ├ └──other ├ └──mvp ├ └──SimplePluginTemplateProviderImpl.kt ├ └──activity ├ └──res.layout ├ └──mvpActivityXml.kt ├ └──src.app_package ├ └──contract ├ └──mvpContract.kt ├ └──p ├ └──mvpPresenter.kt ├ └──v ├ └──mvpActivity.kt ├ └──mvpBasePresenter.kt ├ └──mvpBaseView.kt ├ └──mvpActivityRecipe.kt ├ └──mvpActivityTemplate.kt ``` ### 以Activity为例,为创建的文件注入灵魂 #### 实现 WizardTemplateProvider > MVPTemplateProviderImpl.kt ``` package other.mvp import com.android.tools.idea.wizard.template.Template import com.android.tools.idea.wizard.template.WizardTemplateProvider import other.mvp.activity.mvpActivityTemplate /** * @Author Neo * @Date 2021/6/7 * @Env Viicare-Neo * @Description SamplePluginTemplateProviderImpl */ class MVPTemplateProviderImpl: WizardTemplateProvider() { override fun getTemplates(): List