くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Invoke-customs are only supported starting with android 0 --min-api 26 ってエラーがでた

ライブラリの追加をしたら下記のようなエラーが出ました。 そこで、解決策を書いていきたいと思います。

Invoke-customs are only supported starting with android 0 --min-api 26

解決策

以下を追加した Module の Build.gradle へ追記したら解決しました。

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

軽く解説

追加した、ライブラリが Android でサポートされていない Java 8 の機能を使っていたからかと思います。

具体的には、Android のアプリを作成する上で 古いAndroid OS では Java 8 の言語機能全てを使うことはできません。
しかし、最新版の Android Studio なら一部使うことができます。

具体的には エラーメッセージにあるように Android 0reo から使うことができるようです。

そのためには、API の最小バージョンを Android Oreo に設定する必要があります。
しかし、現実的に Android O 以下のシェアも以前高いままなため切ることができません。

解決策の中で追加した文字列は、 Androdi アプリのなかで Java 8 の言語機能を使えるようにするためのものです。

実は、上記記述だけではなく 新しめな Android Studio でない場合は 最近の Android Studio で採用されている Build Tool chain を使うように追加で設定する必要ががあるのですが、 いまだに古い Android Studio 使ってる人は解決できるっしょ(新しいの使ってるから調べたくない...) とかあって書いてません。

参考元

stackoverflow.com

developer.android.com