투케이2K

37. (TWOK/UTIL) [Android/Java] Gradle Scripts - 빌드 설정 관리 본문

투케이2K 유틸파일

37. (TWOK/UTIL) [Android/Java] Gradle Scripts - 빌드 설정 관리

투케이2K 2022. 4. 14. 08:45

[설 명]

프로그램 : Android / Java

설 명 : Gradle Scripts - 빌드 설정 관리

 

[build.gradle (Project) : 소스 코드]

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    // -----------------------------------------------------------
    // TODO [코틀린 호환성 추가]
    ext.kotlin_version = '1.4.10'
    // -----------------------------------------------------------
    // TODO [그래들 저장소 설정 실시 >> settings.gradle 파일에서도 추가 설정 필요]
    repositories {
        google()
        mavenCentral()
        jcenter()

        maven {
            url "https://maven.google.com"
        }

        maven { url "https://www.jitpack.io" }
    }
    // -----------------------------------------------------------
    // TODO [gradle 의존성 라이브러리를 사용하기 위해 classpath 설정]
    dependencies {
        // TODO [안드로이드 빌드 그래들 버전]
        classpath "com.android.tools.build:gradle:7.0.3"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        // TODO [코틀린 호환성 추가]
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
    // -----------------------------------------------------------
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
 

[build.gradle (Module) : 소스 코드]

// TODO [플러그인 적용 실시]
plugins {
    // [안드로이드 플러그인]
    id 'com.android.application'

    // [코틀린 플러그인]
    id 'kotlin-android'
}



// TODO [애플리케이션 빌드 설정 지정 실시]
android {
    // TODO [컴파일 버전]
    compileSdk 31

    // [Config 셋팅]
    defaultConfig {
        // ----------------------------
        applicationId "com.app.test" // 앱 아이디
        // ----------------------------
        minSdk 21 // 최소 빌드 버전
        // ----------------------------
        targetSdk 31 // TODO 타겟 빌드 버전
        // ----------------------------
        versionCode 1 // TODO 앱 버전 코드 [마켓 관리]
        // ----------------------------
        versionName "1.0.0" // TODO 앱 버전 이름 [마켓 관리]
        // ----------------------------
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // ----------------------------
    }

    // [빌드 설정]
    buildTypes {
        /*
        debug {
            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // [프로가드 설정 파일 지정]
        }
        // */
        release {
            minifyEnabled false // [true 프로가드 사용 / false 프로가드 사용안함]
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // [프로가드 설정 파일 지정]
        }
    }

    // [컴파일 자바 버전 지정]
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // [아파치 http 사용 설정]
    useLibrary ('org.apache.http.legacy')
}



// TODO [라이브러리 의존성 부여 실시]
dependencies {

    // -----------------------------------------------------------

    // [안드로이드 X 관련 의존성 부여 실시]
    //implementation 'androidx.appcompat:appcompat:1.3.0' // TODO [컴파일, 빌드 타켓 30 인 경우]
    //implementation 'com.google.android.material:material:1.4.0' // TODO [컴파일, 빌드 타겟 30 인 경우]
    //implementation 'androidx.constraintlayout:constraintlayout:2.1.2' // TODO [컴파일, 빌드 타겟 30 인 경우]

    implementation 'androidx.appcompat:appcompat:1.4.1' // TODO [컴파일, 빌드 타겟 31 인 경우]
    implementation 'com.google.android.material:material:1.5.0' // TODO [컴파일, 빌드 타겟 31 인 경우]
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3' // TODO [컴파일, 빌드 타겟 31 인 경우]

    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // -----------------------------------------------------------

    // [코틀린 호환성 추가]
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // -----------------------------------------------------------

    // [테드 퍼미션 : 다중 퍼미션 체크 라이브러리]
    implementation 'gun0912.ted:tedpermission:2.2.2'

    // -----------------------------------------------------------

    // [altbeacon : 비콘 스캔 및 신호 활성 라이브러리]
    implementation 'org.altbeacon:android-beacon-library:2.+'
    //implementation 'org.altbeacon:android-beacon-library:2.9.2'
    //implementation 'org.altbeacon:android-beacon-library:2.16.3', ext: 'aar'
    //noinspection GradleCompatible
    implementation 'com.android.support:localbroadcastmanager:28.0.0'

    // -----------------------------------------------------------

    // [okhttp 통신 라이브러리]
    implementation("com.squareup.okhttp3:okhttp:4.9.0")
    //implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    //implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
    //androidTestImplementation "com.squareup.okhttp3:mockwebserver:4.9.0"
    //implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    //implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'

    // -----------------------------------------------------------

    // [AsyncHttpClient 통신 라이브러리]
    implementation 'com.loopj.android:android-async-http:1.4.9'

    // -----------------------------------------------------------

    // [zxing QR Scan]
    implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
    implementation "com.google.zxing:core:3.3.0"

    // -----------------------------------------------------------
}
 

[gradle-wrapper.properties : 소스 코드]

# -----------------------------------------------------------
#Wed Apr 13 09:54:04 KST 2022
distributionBase=GRADLE_USER_HOME
# -----------------------------------------------------------


# -----------------------------------------------------------
# TODO [build.gradle 파일 에서 설정한 android class path zip 설정]

distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
# -----------------------------------------------------------


# -----------------------------------------------------------
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
# -----------------------------------------------------------
 

[proguard-rules.pro : 소스 코드]

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile


# -----------------------------------------------------------

# TODO [proguard 중요 사항]

# 1. 난독화 적용 시 외부 라이브러리 및 jar 파일 사용 시 패키지 명을 확인해서 난독화 제외 설정 필요 (특정 객체 초기화 부분 클래스에서 패키지명 파악)

# 2. 프로젝트 설정 부분에서 release 모드와 debug 모드 나눠서 설정 가능

# -----------------------------------------------------------





# -----------------------------------------------------------

# TODO [proguard option]

#-dontwarn 패키지명.** : 지정해서 경고 무시

#-keep class 패키지명.** : 난독화가 필요하지 않은 경우

#-keep interface 패키지명.** : 난독화가 필요하지 않은 경우

#-ignorewarnings : 경고 무시

#-dontoptimize : 최적화 하지 않기

#-dontshrink : 사용하지 않는 메소드 유지

#-keepclassmembers : 특정 클래스 멤버 원상태 유지

#-keepattributes : 내부 클래스 원상태 유지 적용

#-dontshrink : 사용하지 않는 메소드 유지 설정

#-dontoptimize : 최적화하지 않음

#-dontobfuscate : 난독화를 수행 하지 않도록 함

#-verbose : 로그봄 설정

#-ignorewarnings : 경고 무시

#-dontpreverify : 사전 검증기능을 사용하지 않음

#-dontusemixedcaseclassnames : 대소문자가 혼합된 클래스명을 허용하지 않음

# -----------------------------------------------------------





# -----------------------------------------------------------

# TODO [project settings]

# [디버깅 모드에서 난독화 제외 설정]
#-dontshrink
#-dontoptimize
#-dontobfuscate

# -----------------------------------------------------------





# -----------------------------------------------------------

# TODO [class and google]

-keepclasseswithmembers class * {
    native <methods>;
}
-keepclasseswithmembernames,includedescriptorclasses class * {
    native <methods>;
}
-keepclassmembers enum * {
    values(...);
    valueOf(...);
}
-keep class com.google.android.** { *; }
-keep class google.** { *; }
-keep class android.** { *; }
-keep class androidx.** { *; }
-keep class com.android.** { *; }
-keep class com.google.** { *; }
-keep class lambda* { *; }
-keep public class * extends android.app.Activity { *; }
-keep public class * extends android.app.Application { *; }
-keep public class * extends android.app.Service { *; }
-keep public class * extends android.content.BroadcastReceiver { *; }
-keep public class * extends android.content.ContentProvider { *; }
-keep public class * extends android.app.backup.BackupAgentHelper { *; }
-keep public class * extends android.preference.Preference { *; }
-keep public class * extends android.widget.TextView { *; }
-keep public class * extends android.widget.Button { *; }
-keep public class * { public protected *; }
-keep class org.apache.http.**
-keep interface org.apache.http.**

# -----------------------------------------------------------
 

[gradle.properties : 소스 코드]

# -----------------------------------------------------------
# TODO [jvmargs 설정]
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# -----------------------------------------------------------


# -----------------------------------------------------------
# TODO [AndroidX 사용 관련]
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# -----------------------------------------------------------


# -----------------------------------------------------------
# TODO [타사 라이브러리 바이너리 변환]
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# -----------------------------------------------------------


# -----------------------------------------------------------
# TODO [jniLibs so 파일 관련]
android.useDeprecatedNdk=true
# -----------------------------------------------------------


# -----------------------------------------------------------
# TODO [aab >> so file load]
android.bundle.enableUncompressedNativeLibs=false
# -----------------------------------------------------------
 

[settings.gradle : 소스 코드]

// -----------------------------------------------------------
// TODO [외부 프로젝트 모듈 설정]
// include ':app', ':simpleui'
// -----------------------------------------------------------


// -----------------------------------------------------------
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

    // TODO [빌드 그래들 저장소 설정 실시]
    repositories {
        google()
        mavenCentral()
        jcenter()

        maven {
            url "https://maven.google.com"
        }

        maven { url "https://www.jitpack.io" }
    }
}
// -----------------------------------------------------------
rootProject.name = "lotecsmanager"
include ':app'
// -----------------------------------------------------------
 

[local.properties : 소스 코드]

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.

# -----------------------------------------------------------
# TODO [SDK 및 NDK 경로 지정 실시]
sdk.dir=/Users/a601559965/Library/Android/sdk
#ndk.dir=/Users/a601559965/Library/Android/sdk/ndk/23.1.7779620
# -----------------------------------------------------------
 

 
반응형
Comments