포스팅 OS : Mac
검색어 : 디버그(Debug), 릴리즈(Release), 빌드(Buiild), 벨류(Value)
 
안드로이드 스튜디오로 앱을 소스를 관리할 때 디버그 빌드와 릴리즈 빌드의 벨류값을 따로 관리 하고 싶을 때 사용한다.
 
예를 들어 하나의 텍스트 뷰에 디버그 일때와 릴리즈 일때 각각 다른 텍스트를 보여주고 싶을 때 사용 가능하다. 
Ex)
- 디버그 빌드 일때는 텍스트로 '디버그 모드'를 노출
- 릴리즈 빌드 일때는 텍스트로 '릴리즈 모드'를 노출 
 
사용법은 아래와 같다.
 
1. build.gradle(Module:app)에서 아래와 같이 벨류를 생성 할 수 있다.
android {
    ...

    buildTypes {
        debug {
            // 레이아웃 벨류 사용법
            resValue("string", "testvalue", "디버그 모드")

            // 자바 벨류 사용법
            buildConfigField "String",  "TestValue01", "\"디버그 모드\""
            buildConfigField "int",     "TestValue02", "1234567890"
            buildConfigField "boolean", "TestValue03", "true"

        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            // 레이아웃 벨류 사용법
            resValue("string", "testvalue", "릴리즈 모드")

            // 자바 벨류 사용법
            buildConfigField "String", "TestValue01", "\"릴리즈 모드\""
            buildConfigField "int",     "TestValue02", "0987654321"
            buildConfigField "boolean", "TestValue03", "false"
        }
    }
}
- 위와 같이 같은 벨류 명으로 debug와 release에 값을 다르게 생성하면 각 모드에서 해당 값으로 사용 가능하다.
 
1) resValue
- XML에서 사용할 수 있는 벨류
- 생성한 벨류는 모두 generated.xml에 자동으로 생성된다. 
- generated.xml : 아래와 같이 resValue로 생성한 변수가 생성되어 있는 것이 확인 가능하다.
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- Automatically generated file. DO NOT MODIFY -->

    <!-- Values from build type: release -->
    <string name="testvalue" translatable="false">릴리즈 모드</string>

</resources>
2) buildConfigField
- 자바 소스에서 사용 가능한 벨류.
- 생성한 벨류는 모두 BuildConfig.java에 자동으로 생성된다.
- Buildconfig.java : 아래와 같이 buildConfigFeild로 생성한 변수가 생성되어 있는 것이 확인 가능하다.

public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.linecorp.advertise.buildmodetest";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from build type: debug
public static final String TestValue01 = "디버그 모드";
public static final int TestValue02 = 1234567890;
public static final boolean TestValue03 = true;
}

2. 위에서 생성한 벨류를 사용해보자
1) resValue 사용법
- 아래와 같이 화면 레이아웃 xml에 벨류값을 불러서 사용한다.
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/testvalue" />
2) buildConfigField 사용법
- 아래와 같이 자바 소스로 벨류값을 불러서 사용한다.
TextView testValue01 = findViewById(R.id.txt_testValue01);
testValue01.setText(BuildConfig.TestValue01);
 
 
 
 
 
 

 

포스팅 OS : Windows 10

검색어 : 코틀린(Kotlin), 셋팅(Setting), 셋업(Setup), 설치(Install)


앞으로 매번 포스팅 글 상단에 포스팅 OS를 기재해 놓을 생각입니다. 그 이유는 제가 노트북은 맥이고 데스크탑은 Windows를 사용하고 있어서 수시로 바뀔 예정이라 항상 상단에 표기해 놓도록 하겠습니다. 운영체제가 바뀐다 하여도 단축키나 메뉴의 위치 말고는 큰 영향이 없기에 무리 없을 것으로 판단됩니다. (이정도 차이조차 극복하지 못하신다면 개발 자체가 힘든분이라 생각됩니다...)



1. 코틀린(Kotlin) 플러그인 설치


1) 안드로이드 스튜디오 3.0 이전 버전


현재 설치되어 있는 안드로이드 스튜디오가 2.x 버전일 경우에는 플러그인을 설치해야 합니다.


File -> settings -> Plugins 에서 검색창에 Kotlin으로 검색하시면 JetBrains사에서 만든 플러그인이 딱 1개 나옵니다. install 버튼을 눌러서 설치하시면 됩니다. (아래 사진에는 이미 설치되어 있는 관계로 Uninstall 버튼이 표시되고 있습니다.)




2) 안드로이드 스튜디오 3.0 이상 버전


안드로이드 스튜디오 3.0 이상 버전일 경우에는 별도의 플러그인 설치 없이 바로 코틀린 사용이 가능합니다. 아래 사진처럼 include Kotlin support에 체크 후 프로젝트를 생성하면 코틀린으로 만들어진 메인 액티비티가 생성됩니다.





2. 프로젝트 그래들 셋팅


안드로이드 스튜디오 3.0 이상 버전일 경우 바로 위 사진처럼 include Kotlin support에 체크 후 사용해 프로젝트를 생성하면 아래와 같이 코틀린으로 생성된 메인 액티비티가 반겨줍니다.

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}


이제 그래들을 살펴 보겠습니다. 우선 build.gradle(Project : ...) 를 살펴보면 아래와 자바 프로젝트와 다른 점이 보입니다.

buildscript {
ext.kotlin_version = '1.2.21'
    ...
}

코틀린 버전을 입력해놓은 변수가 보입니다. 이걸 보면 딱 감이 옵니다. 코틀린이라는 언어를 라이브러리 처럼 사용하고 있구나... 라고 말이죠.

그럼 이제 build.gradle(Module:app)으로 가보겠습니다. 

dependencies {
...
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
...
}

역시 생각대로 코틀린 라이브러리가 컴파일 되어 있는 것이 보입니다. 이걸 보면 기존에 자바 프로젝트에도 코틀린을 사용할 수 있다는 것을 알 수 있습니다.

여기서 눈썰미 있는 분들은 compile -> implementation 로 명령어가 바뀌어 있는 것을 눈치채셨을 겁니다. 이부분에 대한 설명은 지금은 중요한 것이 아니니 다음에 기회되면 포스팅하도록 하겠습니다. 지금은 그냥 compile 명령어가 바뀌었다라고만 알고 계시면 됩니다. 

(물론 implementation 대신 compile 명령어를 사용하셔도 작동합니다.)

 



3. Anko 라이브러리 추가


여기까지 코틀린 플러그인을 설치하고 코틀린을 사용한 프로젝트의 그래들까지 살펴보았습니다. 하지만 여기서 개발환경 셋팅의 끝이 아닙니다. 코틀린을 이용하여 안드로이드 앱을 개발할 때 조금 더 편리하게 사용가능하도록 도와주는 라이브러리가 있습니다. 그중 Anko는 가장 강력한 라이브러리 중 하나입니다. 가장 최신 Anko버전을 확인하려면 Anko repository에서 확인가능합니다.


아래와 같이 gradle에 추가해주시면 됩니다.

/* bulid.gradle(Project:...) */
buildscript {
ext.kotlin_version = '1.2.21'
ext.anko_version = '0.10.3'
    ...
}


/* bulid.gradle(Module:app) */
dependencies {
...
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "org.jetbrains.anko:anko:$anko_version"
...
}

Anko 라이브러리가 가지고 있는 기능은 해당 기능을 사용할때 하나하나 포스팅하도록 하겠습니다. 지금은 안드로이드 앱을 코틀린으로 개발시 필수 라이브러리라고 생각하시면 됩니다. 여기까지 하셨으면 기본적인 안드로이드 스튜디오에 코틀린 개발환경 셋팅은 끝난 것입니다. 




4. Hellow Kotlin 실행


Hellow Kotlin을 실행해보도록 하겠습니다. 


- activity_main

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.network_kotlin_test.MainActivity">

<TextView
android:id="@+id/txt_hellow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:gravity="center" />

</LinearLayout>

- MainActivity.kt

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

txt_hellow.text = "Hellow Kotlin"
}
}


위와 같이 셋팅하고 실행하면 아래와 같이 화면에 Hellow Kotlin이 출력되는 것을 확인할 수 있습니다.




이제 코틀린으로 안드로이드 앱을 개발하기 위한 셋팅을 마쳤습니다. 처음 써보는 포스팅인지라 많이 부족합니다. 최대한 알아보기 쉽게 작성하려고 노력하였으나 제 의도대로 쓰였는지 모르겠습니다. 그럼 이만 마치겠습니다.




+ Recent posts