Android Studio 3.0 で Robolectric 関連の変更に追従

先日 Android Studio 3.0 が正式にリリースされたので早速ダウンロードしてビルドしたら Robolectric のテストがコケるようになってしまった
Getting Started | Robolectric に書いてある通りなのだけど以下の対応をしたら通るようになった
どうやらリソースパスを解決するAPIに変更があったらしい

1. testOptions の追加

app/build.gradle に以下の記述を追加する

android {
  testOptions {
    unitTests {
      includeAndroidResources = true
    }
  }
}

2. BuildConfig の指定を止める

テストクラスに Robolectric の BuildConfig 指定がある場合は消す
@Config(constants = BuildConfig.class)

chrome custom tabs の warmup

custom tabs を使う際は事前に chrome のプロセスを温めておくことで遷移を高速化出来るのだけど、自前で実装しようと思うと結構面倒くさい
先人の知恵を拝借しようと Github を検索すると下記の実装が見つかった

DreaminginCodeZH/CustomTabsHelper: Custom tabs, made easy.

saschpe/android-customtabs: Chrome CustomTabs for Android demystified. Simplifies development and provides higher level classes including fallback in case Chrome isn’t available on device.

CustomTabsHelper は Fragment を使う前提の実装で、今回自分は Fragment を使っていなかったので後者の android-customtabs を採用した
使い方は非常にシンプルで README と example の通りなので省略する

基本的な実装はどちらも同じ、というか下記公式の customtabs 使用例が元になっていて単にアプリ(Fragment)開始時に customtabs の service に接続し、停止時に切断している
GoogleChrome/custom-tabs-client: Chrome custom tabs examples

ちょっとしたことだけど非常に反応が良くなるので customtabs を使うならぜひ利用したい