#자동화

겍코겍코· 4개월

Gradle로 안드로이드 기능 자동 생성하기

개발을 하다 보면 비슷한 기능을 반복해서 만드는 일이 많습니다. 특히 안드로이드 앱 개발에서 새로운 기능을 추가할 때마다 패키지 구조를 만들고, 필요 파일을 하나씩 추가하는 일은 꽤 귀찮고 비효율적입니다. 하지만 Gradle을 사용하면 이런 작업을 자동화할 수 있습니다. 한 번 세팅해 두면 클릭 몇 번으로 기능 추가가 끝나니, 시간이 절약되는 것은 물론 실수도 줄어듭니다. 오늘은 Gradle을 활용해 안드로이드 기능을 자동 생성하는 방법을 소개하겠습니다. Gradle을 사용한 기능 자동화란? Gradle은 빌드 자동화 도구로 알려져 있지만, 사실 스크립트를 통해 다양한 작업을 자동화할 수 있습니다. 예를 들어 Feature Module을 만드는 작업도 Gradle에서 정의한 커스텀 작업으로 간단하게 처리할 수 있습니다. 여기서 Feature Module이란 안드로이드에서 기능을 독립적으로 분리해서 관리하는 모듈로, MVVM 패턴이나 클린 아키텍처를 적용할 때 유용합니다. 왜 자동화가 필요할까? 반복 업무 감소: 매번 동일한 구조를 수작업으로 만들 필요가 없습니다. 일관성 유지: 팀원들이 동일한 구조와 패턴을 따르도록 강제할 수 있습니다. 시간 절약: 자동화 덕분에 개발자들은 더 중요한 일에 집중할 수 있습니다. Gradle 설정 및 Feature Module 자동 생성하기 1. Gradle Task 추가하기 먼저 프로젝트의 build.gradle 파일에 새로운 Task를 추가합니다. 이 Task는 새로운 모듈(기능)을 생성하는 역할을 합니다. 아래는 간단한 예시 코드입니다. // Root 레벨 build.gradle import org.apache.tools.ant.taskdefs.condition.Os def featureName = project.hasProperty('featureName') ? project.featureName : 'default' task createFeature { doLast { def featurePath = "./features/feature-${featureName}" def mainSrcPath = "${featurePath}/src/main" println "Creating Feature Module: ${featureName}" // 디렉토리 구조 생성 mkdir "${mainSrcPath}/java" mkdir "${mainSrcPath}/res/layout" mkdir "${mainSrcPath}/res/values" // 기본 build.gradle 파일 생성 def buildFile = file("${featurePath}/build.gradle") buildFile.text = """ apply plugin: 'com.android.library' android { compileSdkVersion 34 defaultConfig { minSdkVersion 21 targetSdkVersion 34 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false } } } dependencies { implementation project(':app') } """ println "Feature Module ${featureName} 생성이 완료되었습니다." } } 위 스크립트는 다음을 자동으로 수행합니다. features/feature-<name> 경로에 새로운 디렉토리를 생성합니다. src/main 안에 기본 폴더 구조를 만듭니다. build.gradle 파일을 추가하고 기본 설정을 작성합니다. 2. Task 실행하기 Gradle Task를 실행할 때는 명령어에 -P 옵션을 사용해 모듈 이름을 전달합니다. 터미널에서 다음 명령어를 입력하세요: ./gradlew createFeature -PfeatureName=profile 이 명령어를 실행하면 features/feature-profile이라는 폴더에 자동으로 새로운 모듈이 생성됩니다. 3. 새로 생성된 모듈 확인하기 Gradle Task 실행이 끝난 후 프로젝트 구조를 확인하면 다음과 같은 결과를 볼 수 있습니다: project-root/ │ ├── features/ │ └── feature-profile/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ ├── res/ │ │ ├── layout/ │ │ └── values/ 이제 추가적인 수정 없이 바로 모듈을 사용할 준비가 완료되었습니다. 커스터마이징 및 확장하기 위 예제는 기본적인 구조만을 자동화했지만, 더 복잡한 작업도 가능합니다. 예를 들어, Activity/Fragment 자동 추가: 기본 클래스 파일을 생성하는 작업을 Task에 추가할 수 있습니다. 템플릿 코드 삽입: 모듈마다 공통으로 들어가는 코드를 자동으로 작성합니다. Dependencies 관리: 자주 사용하는 라이브러리를 build.gradle에 미리 추가해 둡니다. 예를 들어 Activity 파일을 추가하는 예제는 다음과 같습니다. def activityFile = file("${mainSrcPath}/java/Feature${featureName}Activity.kt") activityFile.text = """ package com.example.feature.${featureName} import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class Feature${featureName.capitalize()}Activity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_${featureName}) } } """ 결론: 반복 작업은 Gradle에 맡기세요 반복적인 작업은 개발자의 시간을 낭비하고 실수를 유발할 수 있습니다. Gradle의 커스텀 Task 기능을 활용하면 코드 한 줄 작성 없이 새로운 모듈을 생성할 수 있고, 팀 내 일관된 개발 환경을 유지할 수 있습니다. 처음 설정할 때는 조금 시간이 걸릴 수 있지만, 한 번 설정해 두면 개발 생산성이 크게 올라갈 것입니다. "자동화는 귀찮음을 없애는 첫걸음입니다."
99
0