Kotlin에서 안드로이드

9687 단어 AndroidKotlin
안드로이드를 개발하면 자바6의 군더더기인지 귀찮은지, 융통성이 없는지 짜증난다.Kotlin 네!이런 소문을 듣고 해봤어요.(별로 시도하지 않았기 때문에 업데이트할 수 있었으면 좋았을 텐데...)

환경


시도하는 환경은 다음과 같습니다.
  • OSX Yosemite(10.10.5)
  • Android Studio 1.5
  • Android SDK 24.4.1
  • JDK 1.8
  • Android Studio에 Kotlin 플러그인 설치


    먼저 Android Studio에 Kotlin 플러그인을 설치하여 Kotlin의 개발 환경을 조정합니다.
    1. 기본 설정에서 플러그인을 선택한 다음 "Install JetBrain plugin..."버튼 대화 상자 닫기

    2. "Browse JetBrains Plugins"화면에서 "kotlin"을 검색하면 "Kotlin"플러그인이 표시됩니다.플러그인 설치 버튼을 클릭하여 플러그인을 설치합니다.

    3. 다운로드 및 설치 확인 대화 상자를 표시하고 [예] 버튼을 클릭합니다.

    4. 다운로드 시작

    5. 다운로드가 완료되면 대화 상자가 닫히고 "Restart Android Studio"버튼을 클릭하여 Android Studio를 다시 시작합니다.

    6. 재부팅 확인 대화 상자를 표시하고 "Restart"버튼을 클릭하여 Android Stusio를 재부팅합니다.

    샘플 항목 만들기


    예제 항목을 만듭니다.일반적인 Android 응용 프로그램과 같은 절차를 밟아 Kotlin 파일로 변환합니다.
    1. Starta new Android Studio 프로젝트에서 "BlankActivity"만들기
    2. [코드] > [Convert Java File to Kotlin File]을 선택하여 Java를 Kotlin으로 변환합니다.
    변환된 코드는 다음과 같습니다.
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val toolbar = findViewById(R.id.toolbar) as Toolbar
            setSupportActionBar(toolbar)
    
            val fab = findViewById(R.id.fab) as FloatingActionButton
            fab.setOnClickListener { view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show() }
        }
    
        override fun onCreateOptionsMenu(menu: Menu): Boolean {
            // Inflate the menu; this adds items to the action bar if it is present.
            menuInflater.inflate(R.menu.menu_main, menu)
            return true
        }
    
        override fun onOptionsItemSelected(item: MenuItem): Boolean {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            val id = item.itemId
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true
            }
    
            return super.onOptionsItemSelected(item)
        }
    }
    

    환경을 Kotlin으로 만들기

  • 소스 코드를 배치하는 디렉터리 이름을 "java"에서 "kotlin"으로 변경합니다.java 디렉토리를 선택하고 Refactor 를 마우스 오른쪽 버튼으로 클릭합니다 - [Rename...](테스트 코드 패키지 이름도 변경)

  • Project 구성은 다음과 같습니다.

  • 도구 > Kotlin > Kotlin 프로젝트 구성을 선택하여 프로젝트 구성을 Kotlin과 일치시킵니다.

  • 확인 대화 상자를 표시합니다.버전을 기본값으로 유지하려면 [확인] 버튼을 클릭합니다.

  • build.gradle이 변경됩니다.동기화할 메시지가 나타나면 동기화 안 함 링크를 클릭하여 변경 사항을 동기화합니다.

  • 변경 전의build.gradle(Module: app)
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.1"
    
        defaultConfig {
            applicationId "jp.co.opst.kotlinsample"
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:design:23.1.1'
    }
    
    변경된build.gradle(Module: app)
    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.1"
    
        defaultConfig {
            applicationId "jp.co.opst.kotlinsample"
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        sourceSets {
            main.java.srcDirs += 'src/main/kotlin'
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
        compile 'com.android.support:design:23.1.1'
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    }
    buildscript {
        ext.kotlin_version = '1.0.0-beta-3595'
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    repositories {
        mavenCentral()
    }
    
    
    의존 관계나 구축할 때의 클래스 경로 등을 추가했습니다.

    예제 응용 프로그램 실행


    응용 프로그램이 정상적으로 실행됩니다.
    움직여!

    Kotlin 스타일 코드 시도


    에반젤리스터 씨의 자료를 보고 많은 시도를 하고 싶었지만 시간이 없어서 함수 확장만 시도했다
    이만걸 리스트 직전!기존 제품에 Kotlin#jjug_ 사용ccc #jjug #jkug // Speaker Deck

    확장 시도 함수

  • 새 Kotlin 파일 만들기

  • 파일 이름을 입력하고 "확인"단추를 누르십시오.

  • 함수를 정의하고 프로그램이 시작될 때 호출해 보십시오
  • SampleKotlin.kt
    package jp.co.opst.kotlinsample
    
    import android.content.Context
    import android.widget.Toast
    
    fun Context.toast(message: String, duration:Int = Toast.LENGTH_SHORT) {
        Toast.makeText(this, message, duration).show()
    }
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
             // (省略)
            toast("Hello, Kotlin!")
        }
    
    응용 프로그램을 시작하면 토스트를 표시합니다!

    좋은 웹페이지 즐겨찾기