Googleの新しいコード短縮ツール R8 を試してみました。

公開日:2019-02-22
最終更新:2019-02-22

つい先日、Googleデベロッパーブログに

Google の新しいコード短縮ツール R8 が Android studio 3.3 beta にて利用可能です

との記事が出ていましたので、ちょっと試してみました。

AndroidStudioでの設定方法

 私の場合、AndroidStudio3.3.1でしたので、プロジェクトの gradle.properties ファイルに

android.enableR8=true

と設定するだけで使用できます。

 ただ、この記事にあるように、さらなる最適化をするために、

android.enableR8.fullMode=true

を追加することもできますが、現在のところ

  1. このモードは ProGuard との直接の互換性はありません
  2. 追加の保持ルールがいくつか必要となる場合があります。

とのことで、R8のドキュメントをググってみたのですが、まだ不完全みたいで、今回はスルーしました。

Proguardとの互換性

 この記事には書かれていないので、ここからは自分でテストした結果です。

 当方は、モジュールのbuild.gradleの中に

 buildTypes {  
   ......  

        debug {  
            minifyEnabled true  
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),  
                                                                            'proguard-rules.pro'  
        }  
    }

としてみました。

 この場合、proguard-rules.proの中の設定がそのまま踏襲されるようです。

 では、逆にproguardFilesを指定しなかったらどうなるかというと、これも正常にビルドされ、エミュレータ(api28)で起動できました。

 このあたりの詳細はどこかないかとググったところ、Proguardの開発元Guardsquare のブログにありました。ここのCTOが解説しています。

 ここで触れられているR8のバージョンと、私のAndroidStudio3.3.1のそれとが必ずしも同じものとは限りませんが、以下、このブログの内容を簡記します。

 開発者にとって朗報は、R8はProGuardと下位互換性があるということです。
 正常に機能するProGuard構成(Stackoverflowから折衷的にコピーされたもの)がある場合は、それをR8に引き継ぐことができます。
 現在はまだいくつかのオプションを無視しています。
 R8には入れ子になった入力と出力アーカイブの高度な処理とフィルタリングもありませんが、とにかくAndroidビルドプロセスはかなり標準化されています。

ProguardとR8の比較テスト

 この記事でも取り上げられていますが、いろんな条件で比較してみました。ただ、あくまでも私が今開発しているアプリでのテストです。

 ビルド時間は、cleanしてrebuildした時間です。

テストの条件 APKファイルのサイズ ビルド時間
R8のみ    5,688kb(102.0%)  15秒(5.3倍速)
R8 + proguardFiles    5,725kb(102.7%)  16秒(5.0倍速)
Proguardのみ    5,574kb(100.0%) 1分20秒(1.0倍速)

 これらの結果から、言えることは、

  • R8の作成するファイルサイズは、Proguardよりも若干大きくなる
  • R8のビルド時間はProguardのそれよりも格段に速い

    ということでしょうか。

 しかし、元記事でのテストについては、

  • ファイルサイズは、私のテストとは逆で若干小さくなるようです。
  • 処理速度は2倍速程度でした。

私のR8の使いどころ

 プログラマは、日々、ちょっとコードを追加・修正してその都度ビルドしてエミュレータで検証するという長い永遠と続く作業行っています。

 そのためもあってか、難読化処理は、デバッグ中は外し、リリース版に適用するのが普通だと思います。

 しかし、これだけビルド速度が速ければ、難読化による不具合も含めた検証のため、エミュレータを起動することは、さほど苦にならなくなると思います。

 そこで、私は、R8をdebugの過程で利用し始めました。今は、リリース版とdebug版の難読化設定は同じです。

 ただ、先のCTOが解説していましたが、今後R8の最適化が進んでいけば、ビルド時間は遅くなっていくとのことです。しかし、それにしても利用価値は大いにあるのではないでしょうか?

R8へのもうひとつの期待 

 自分の検証テストでわかったのが、proguardFiles の設定が無くてもR8は動くということです。

 これは希望的観測ですが、今後、proguard-rules.proの中身を、四苦八苦して設定する手間が無くなる日が来るのではないでしょうか?このような手間はすべて、AndroidStudioがR8の中で引き受けてくれる時代が来るのではないでしょうか?そんな素人開発者にも優しい時代がやってくるといいな(^_^)

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
@Rycms7LG34xrEHWvの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする