티스토리 뷰

반응형

개발을 하면서 문득 그런 생각을 하였습니다. 반복적으로 생성하는 클래스를 한번에 생성할 수는 없을까?
개발을 하다보면 여러 프로젝트를 경험할테고 반복적으로 생성되는 클래스들이 많을 것입니다. 또한 협업을 하다보면 동일한 화면을 구현한다고 해도 개발자 각자의 스타일로 개발하다보면 보일러 플레이트 코드가 발생하게 될 수 있습니다.

 

이러한 문제점을 해결하기 위해서 Template을 만들어 정형화 한다면, 개발자간의 소통 부재와 각자의 스타일로 만들어서 발생할 수 있는 보일러플레이트 코드들을 최소화 할 수 있을 것입니다.
이번 시간은 Android Studio 에서 Template 을 만들 수 있는 방법에 대해서 공유하려고 합니다.

 


 

플러그인 만들기

Android Studio Dolphin(213.7172.25) 을 활용해서 플러그인을 만들었습니다.
Android Studio 버전은 Android Studio > About Android Studio 에서 확인 할 수 있습니다.

플로그인을 만들기 앞써 IntelliJ Platform Plugin Tempalte GitHub Repository을 개인 GitHub 에서 사용할 수 있도록 Use this template 해야합니다.
IntelliJ Platform Plugin Tempalte 에 접속하면 아래와 같이 Use this template 가 노출될 것입니다.

해당 버튼을 클릭하여 개인 GitHub의 Repository로 설정합니다.

 

 


 

gradle.properties

  • studioCompilePath, studioRunPath는 IDE 실행 시 Intellij 대신 Android Studio를 사용하기 위해 경로를 설정합니다.
    e.g. studioCompilePath = /Applications/Android Studio.app/Content
    e.g. studioRunPath=/Applications/Android Studio.app/Contents
  • platformPlugins 에서 사용 할 java, android, kotlin 을 세팅합니다.
    e.g. platformPlugins = java, cohttp://m.intellij.java, org.jetbrains.android, android, org.jetbrains.kotlin


 

Build gradle.kts 설정하기

  • intellij.localPathStudioRunPath를 설정합니다. 위와 같이 설정하는 이유는 나중에 runIde 시 Intellij가 아닌 Android Studio가 열리게 하기 위해서입니다.

 

Plugin.xml 설정하기

  • gradle.properties 에서 정의한 pluginGroup, pluginName을 id와 name에 설정합니다.
  • 프로젝트 구조를 pluginGroup 과 동일하게 설정합니다.
  • vendor는 faithdeveloper 으로 설정하였습니다. custom 하게 하시면 됩니다.

 

MyProjectManagerListener 설정하기

Project Open 과 Close에 따른 리스너 처리를 합니다.

 


 

WizardTemplateProviderImpl 설정하기

listOf 로 Template 리스트를 정의합니다.
아래 코드는 recyclerActivitySetupTemplate 라는 Template 을 선언한 것입니다.
만약, scrollActivitySetupTemplate 도 추가한다면 listOf(recyclerActivitySetupTemplate scrollActivitySetupTemplate) 이렇게 구성하면 됩니다.

 


 

RecyclerActivitySetupTemplate 설정하기

생성할 Template 의 기본적인 정보를 정의합니다.
Template 을 선택하면 사용자에게 보여질 화면에서 입력 받을 파라미터와 Recipe를 정의합니다.

 


 

RecyclerActivitySetupRecipe 설정

mvvmRecyclerActivitySetup 이름의 RecipeExecutor 확장 함수 정의를 합니다.

Template 생성 할 위치 설정 및 파일을 생성하게 됩니다.

 


 

Template 생성 시 각 파일 정의하기

Activity.kt
Adapter.kt
AndroidManifest.kt
ViewHolder.kt
ViewModel.kt

선언된 String 이 그대로 생성되므로 import나 ClassName 등의 Template 생성 시 구성하려는 것을 정확히 입력합니다.

 


 

Plugin Install

Gradle Run Plugin을 실행하면 Build/libs 안에 jar 파일을 볼 수 있습니다.

Gradle Run Plugin 하는 방법은 여러방법이 있는데 쉽게 할 수 있는 방법은 Android Studio의 Build 를 Run Plugin 로 설정하면됩니다.

생성된 jar 파일을 Android Studio Plugins에서 세팅하면 지금 만든 Template을 사용할 수 있습니다.

 


 

PlugIn 사용 예시

 


 

마무리

이미 저와 같은 Template 을 만드는 것에 대해 고민 한 사람들을 쉽게 발견할 수 있었으며, 개발 포스트로 다양한 예제 소스를 제공 있었습니다. 이번 포스트는 개발 포스트에 올라온 것을 참고하여 공유하였는데요.
Template을 자신의 프로젝트의 특성에 맞게 구성한다면 보일러플레이트 코드를 최소화 할 수 있으며, 개발 속도도 향상될 것으로 예상됩니다.

샘플 Test Code는 Github - TestPluginTemplate 에서 확인 할 수 있습니다.

 


 

참고

스마트한 개발을 위한 Android Studio 플러그인 템플릿
https://github.com/JetBrains/intellij-platform-plugin-template
https://github.com/FaithDeveloper/TestPlugInTemplate 

반응형
댓글