Android项目实战(七十二): 生成arms框架的模板插件
参考:
https://github.com/sionsxie/arms-template-plugin
这里我直接clone该项目进行二次修改
1、clone项目到本地
2、修改根目录下的gradle.properties文件内容
# IntelliJ Platform Artifacts Repositories # -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html # 插件的group 和包名相同 pluginGroup = com.github.sionsxie.armstemplateplugin
#插件名称 pluginName = arms-template-plugin pluginRepositoryUrl = https://github.com/sionsxie/arms-template-plugin # SemVer format -> https://semver.org pluginVersion = 1.0.0 #版本号 自行定义 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 252 #最小支持版本 从About Android studio 中获取 例如:Build #AI-252.27397.103.2522.14617522, built on December 19, 2025
pluginUntilBuild = 252.* # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension platformType = IC # https://plugins.jetbrains.com/docs/intellij/android-studio.html?from=jetbrains.org#matching-versions-of-the-intellij-platform-with-the-android-studio-version # \u7F16\u8BD1\u7248\u672C\u7684ide \u5C31\u662F\u4F60\u8FD0\u884C\u65F6\u5B83\u8981\u4E0B\u8F7D\u7684ide\u7684\u7248\u672C platformVersion = 2022.3.3 #platformDownloadSources = true # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 platformPlugins = java, com.intellij.java, org.jetbrains.android, android, org.jetbrains.kotlin # Java language level used to compile sources and to generate the files for - Java 11 is required since 2020.3 # javaVersion = 11 # Gradle Releases -> https://github.com/gradle/gradle/releases gradleVersion = 6.5 # Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib kotlin.stdlib.default.dependency = false # Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html org.gradle.configuration-cache = true # Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html org.gradle.caching = true # org.gradle.java.home = D:\\My_Soft\\Java\\jdk-11.0.12_windows-x64_bin\\jdk-11.0.12
3、添加自己的模版代码

例如:
package other.src.app_package import other.ArmsPluginTemplateProviderImpl fun armsActivity(isKt: Boolean, provider: ArmsPluginTemplateProviderImpl) = if (isKt) armsActivityKt(provider) else armsActivityJava(provider) private fun armsActivityKt(provider: ArmsPluginTemplateProviderImpl) = """ package ${provider.activityPackageName.value} import android.app.Activity import android.os.Bundle import com.jess.arms.di.component.AppComponent import ${provider.componentPackageName.value}.Dagger${provider.pageName.value}Component import ${provider.moudlePackageName.value}.${provider.pageName.value}Module import ${provider.contractPackageName.value}.${provider.pageName.value}Contract import ${provider.presenterPackageName.value}.${provider.pageName.value}Presenter import ${provider.appPackageName.value}.R import kotlinx.android.synthetic.main.base_title.* class ${provider.pageName.value}Activity : BaseEcloudActivity<${provider.pageName.value}Presenter>() , ${provider.pageName.value}Contract.View { override fun setupActivityComponent(appComponent: AppComponent) { Dagger${provider.pageName.value}Component //如找不到该类,请编译一下项目 .builder() .appComponent(appComponent) .${provider.pageName.value[0].toLowerCase()}${provider.pageName.value.substring(1, provider.pageName.value.length)}Module(${provider.pageName.value}Module(this)) .build() .inject(this) } override fun initView(savedInstanceState: Bundle?): Int { return R.layout.${provider.activityLayoutName.value} //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0 } override fun initData(savedInstanceState: Bundle?) { } override fun getActivity(): Activity = this } """ private fun armsActivityJava(provider: ArmsPluginTemplateProviderImpl) = """ package ${provider.activityPackageName.value}; import android.app.Activity import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.os.Bundle; import butterknife.BindView; import butterknife.ButterKnife; import com.jess.arms.di.component.AppComponent; import ${provider.componentPackageName.value}.Dagger${provider.pageName.value}Component; import ${provider.moudlePackageName.value}.${provider.pageName.value}Module; import ${provider.contractPackageName.value}.${provider.pageName.value}Contract; import ${provider.presenterPackageName.value}.${provider.pageName.value}Presenter; import ${provider.appPackageName.value}.R; public class ${provider.pageName.value}Activity extends BaseEcloudActivity<${provider.pageName.value}Presenter> implements ${provider.pageName.value}Contract.View { @Override public void setupActivityComponent(@NonNull AppComponent appComponent) { Dagger${provider.pageName.value}Component //如找不到该类,请编译一下项目 .builder() .appComponent(appComponent) .view(this) .build() .inject(this); } @Override public int initView(@Nullable Bundle savedInstanceState){ return R.layout.${provider.activityLayoutName.value}; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0 } @Override public void initData(@Nullable Bundle savedInstanceState) { } @Override public void showLoading() { } @Override public void hideLoading() { } @Override public void killMyself() { finish(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ButterKnife.bind(this); } } """
最后执行

作者:听着music睡
出处:http://www.cnblogs.com/xqxacm/
Android交流群:38197636
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号