프로그래밍/Android

[Android] gradle android 빌드 구성

chance 2019. 9. 17. 17:57

어플리케이션

apply plugin: 'com.android.application'

android.applicationVariants.all { variant ->
    if( variant.name == 'release' ) {
    	parent.classpath += variant.javaCompile.classpaths
    }
}

 

라이브러리

apply plugin: 'com.android.library'

android.libraryVariants.all { variant ->
    if( variant.name == 'release' ) {
    	parent.classpath += variant.javaCompile.classpaths
    }
}

 

소스 폴더

// 소스 폴더 구성
// 빌드타입이나 falvor 에 따라 각각의 소스 위치를 지정할 수 있음
android {
    sourceSets {
    	main {
            java.srcDirs = ['src/main/java']
            res.srcDirs = ['src/main/res']
            manifest.srcFile 'src/main/AndroidManifest.xml'
        }
    
        release {
        	
        }
        
        debug {
        
        }
    
    }
}

 

 

빌드 상수

빌드타입, flavor, defaultConfig 등에 선언하면, BuildConfig 클래스에 해당 상수가 추가된다.

각 값은 문자열 " " 로 적어주고, 타입은 java 타입을 사용. "String", "int" ...

// gradle
android {
    defaultConfig {
    	buildConfigField "타입", "이름", "값"
    }
}


// java
public final class BuildConfig {
    public static final 타입 이름 = 값;
}

 

빌드타입

// 빌드타입
// 동일앱의 여러 버전을 생성할 때 사용함
android {
    release {
    	applicationIdSuffix '.release'
        debuggable false
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    
    debug {
    	applicationIdSuffix '.debug'
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }   
}

 

Flavor

// product flavors 로 분리하게 되면 각각 별도의 앱으로 구분됨
android {
    productFlavors {
    	free {
            applicationId 'com.test.a'
            versionCode 1
            versionName '1.0.0'
            buildConfigField "int", "Name", "1"
        }
        
        paid {
        
        }
    }
}