Android O(8.0)から登場したAdaptive Iconに自動で環境毎のラベル付けする

# はじめに
今回は、↓こういう環境ごとのラベル付けをAndroid8から登場したAdaptive Iconでも自動生成して楽しよう！というお話です。　
<img width="307" alt="スクリーンショット 2018-11-21 18.24.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/106116/a208e1ef-73f9-e34c-7d55-1ee69e619290.png">

ちなみにAdaptive Iconはこんなやつ
<img src="https://qiita-image-store.s3.amazonaws.com/0/106116/fb24297e-ef79-6312-d688-0b19e48d943c.gif" width=50%>

皆さんはアプリを複数環境用意するときにアプリアイコン、どうされているでしょうか？
dev, stg, debugなどの環境ごとに色を変えたり、ラベルを付けたり、もしくは[gradle-android-ribbonizer-plugin](https://github.com/maskarade/gradle-android-ribbonizer-plugin)を使ったり。
ribbonizer-plugin使う方が多いと思いますが、Adaptive Iconに対応していないため上記のようなラベルをつけることが出来ません。

しかし、Adaptive Iconでも楽したい…
ということで、対応していないならライブラリを作ってしまおうかと、調べているうちにAdaptive Iconに対応したライブラリを見つけたのでそのご紹介です。

# easylauncher-gradle-plugin
[easylauncher-gradle-plugin](https://github.com/akaita/easylauncher-gradle-plugin)はAdaptive Iconに対応しており、最初に紹介した画像のようにラベルをつけることが出来ます。
しかもribbonizer-pluginよりも設定がシンプルです。

## 設定方法

```gradle:build.gradle
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.akaita.android:easylauncher:1.3.1'
    }
}
```


- androidブロック内で定義したbuildTypes、productFlavorsなどのブロックをeasylauncherブロック内に記述し、ラベルを付けたい環境に `filters = grayRibbonFilter()` を追記します。 `redRibbonFilter("pro")` のように任意文字列のラベルをつけることも出来ますし、省略すればブロックの環境名が自動的に付与されます。

```gradle:app/build.gradle
apply plugin: 'com.akaita.android.easylauncher'

// 略

android {
// 略
    buildTypes {

        debug {
            debuggable true
            applicationIdSuffix = '.debug'
            versionNameSuffix = 'd'
            signingConfig signingConfigs.debug
        }
        release {
            debuggable false
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
productFlavors {
        dev {
            applicationIdSuffix = '.dev'
        }
        stg {
            applicationIdSuffix = '.stg'
        }
        pro {

        }
    }

}

easylauncher {
    // "manifest application[android:icon]" is automatically added to the list
    iconNames "@mipmap/ic_launcher_foreground" // Traditional launcher icon
    foregroundIconNames "@mipmap/ic_launcher_foreground" // Foreground of adaptive launcher icon

    defaultFlavorNaming = true // Use flavor name for default ribbon, instead of the type name

    buildTypes {
        debug {}
        release {}
    }

    productFlavors {
        dev {
            // こうすることでグレー色のラベルdevが生成される
            filters = grayRibbonFilter()
        }
        stg {
            filters = greenRibbonFilter()
        }
        pro {}
    }

    variants {
        proDebug {
            // proReleaseにラベルを付けたくない場合はここでdebugのときのみ設定
            filters = redRibbonFilter("pro")
        }
    }
}
```

設定は以上！ ここまで出来たらbuildすることでアイコンが自動生成されます。この設定で生成されたアイコンがこれ↓。カスタマイズ性高く、ほかにもイメージをオーバーレイしたり、サイズ変えたりいろいろ出来ます。気になる方は作者様のページを御覧ください。
<img width="452" alt="スクリーンショット 2018-11-21 18.52.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/106116/12b6e83c-ca90-2f05-1915-1bbcb3965b70.png">




# 最後に
~~Adaptive Iconを活用してるアプリ、あんまり見たことないんですがどうなんでしょう？~~　意識して見てみると意外と対応してました。
でもひとまず、このライブラリのおかげで引き続き楽できそうです。作者のakaita様、FUJI Goro様に感謝 :pray: