前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

R8でNullPointerException

課題

Android Stuio 3.5からはProguardよりもR8推奨ってことでR8を有効にした状態で リリースビルドをしようとしたらビルド中にNullPointerExceptionが発生してビルドできなかった。

対応

ググった感じだとOkHTTPを入れているとバージョンによっては発生するらしい。
R8の最新バージョン使えばいけるかな、ということで プロジェクトの build.gragleに以下を追記してみたらビルドが通った
com.android.tools:r8com.android.tools.build:gradle よりも上に書かないといけないらしい(未確認)
kotlinx-metadata-jvm はR8の依存関係で必要

buildscript {
    repositories {
        maven { url 'https://dl.bintray.com/kotlin/kotlinx/' }
    }
    dependencies {
        classpath 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.0.5.1'
        classpath 'com.android.tools:r8:1.4.93'
        classpath 'com.android.tools.build:gradle:3.5.0-beta01'
    }
}

備考

Instant Runを無効にすれば問題が発生しないという意見も見られた。未確認だがリリースビルドするときだけならそちらでも良さそう。

参考

github.com

https://issuetracker.google.com/issues/129738209