Notice
Recent Posts
Recent Comments
Link
투케이2K
37. (TWOK/UTIL) [Android/Java] Gradle Scripts - 빌드 설정 관리 본문
[설 명]
프로그램 : 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
# -----------------------------------------------------------
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments