[Modern Android] Jetpack Compose その１

モダーン　アンドロイド
Jetpack Composeを試してみたい

その過程をメモします。

まず、メモしている時点では、開発者PreviewなのでStableチャンネルでは
利用できない。

# 設置する。

https://developer.android.com/studio/preview

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/e68b50b9-176e-6da3-2ab5-c5b3f3b5e786.png)

ZipFileでダウンロードして、圧縮されたデータを元に戻もどす。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/e351047b-d06e-ec7b-eb13-50ae07bb40d6.png)

Nextを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/49bebf5d-fec8-49ae-b00d-2e9aaaa1cb59.png)

Nextを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/b7305d4d-4ec4-e127-1e3d-dd66b04ffcb1.png)

Nextを押します。
どっちを選んでも問題ないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/971dd3a8-2aca-75f9-b9d8-a49f2cd2eeab.png)

Finishを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/9575fc19-4dfc-4809-a337-a4d49b7f4b1d.png)

終わるまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/73fef9ee-75fc-cf92-cdd8-93b210af60a9.png)

Finishを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/2220fbb0-ec6f-619a-c152-bd2acd266ef8.png)

# 始めよう

Create New Projectを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/ac35a080-2d12-4aec-df4f-8c5b70da4586.png)


Empty Compose Activityを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/57c3dfad-2d1b-e40c-2285-111e3b8d65c9.png)

Finishを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/d98d5330-4dad-f43a-5afb-cd9be5180a73.png)

Buildが終わるまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/2aa7f211-921f-3cd6-a4ea-afe3187d53c0.png)

# AVD 

私はAPI30のデバイスを使います。
多分基本設置される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/f39f7324-292b-4d58-8741-069bbafc4acb.png)

# Gradle 

```gradle

android {
    defaultConfig {
        ...
        minSdkVersion 21
    }

    buildFeatures {
        // Enables Jetpack Compose for this module
        compose true
    }
    ...

    // Set both the Java and Kotlin compilers to target Java 8.

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    composeOptions {
        kotlinCompilerExtensionVersion "0.1.0-dev09"
    }
}

```
全てのApp Build.gradle

```gradle
plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdkVersion 29
    buildToolsVersion "30.0.0"

    defaultConfig {
        applicationId "com.dreamwalker.jetpack_compose_101"
        minSdkVersion 29
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion "${compose_version}"
        kotlinCompilerVersion '1.3.70-dev-withExperimentalGoogleExtensions-20200424'
    }
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.0'
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation "androidx.ui:ui-layout:$compose_version"
    implementation "androidx.ui:ui-material:$compose_version"
    implementation "androidx.ui:ui-tooling:$compose_version"
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

```