[Realm/Android] DexArchiveBuilderException / Invoke-customs are only supported starting with Android O の対処法

モバイル用軽量データベース「Realm」を使ったプロジェクトを回したときに、こんな感じの4点セットのエラーが表示されてビルドが回らなくなる場合の対処法です。

java compiler: (4 errors)	
com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:Users***.gradlecachestransforms-1files-1.1realm-android-library-5.8.0.aar645a5a6b1c9632c307cc325eabc44c60jarsclasses.jar	
com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.	
com.android.tools.r8.CompilationFailedException: Compilation failed to complete	
com.android.tools.r8.utils.AbortException: Error: Invoke-customs are only supported starting with Android O (--min-api 26)	

 

RealmのライブラリでJava8の機能を使っていたことが原因

(参考にさせてもらったサイト)

このサイトでRealmの(おそらく)中の人が言っているように、原因はRealmのバージョン5.8.0のライブラリのコードで、Java8の言語機能(ラムダ式)を使ったことによるものだそうです。

The Java 8 code has been removed (lamdas) and a fix should be in the next release.

RealmのライブラリのコードはKotlinのお父さんであるJavaによって書かれています。

その中でラムダ式という機能を使っているのですが、Kotlinの場合はラムダ式は最初からあって普通に使える機能ですが、Javaでは比較的最近のバージョン「8」から出てきた機能で、かつAndroid StudioはJavaのバージョン8は標準ではサポートしていません。

ですので、Java8の言語機能を使えるようにするためには、アプリケーションレベルのbuild.gradleで設定をしてあげる必要があるということです。

サポートされる Java 8 言語機能の使用を開始するには、3.0.0(以降)に Android プラグインをアップデートします。 その後、Java 8 言語機能を(ソースコードで、または依存関係を通じて)使用する各モジュールの build.gradle ファイルに次のコードを追加します。

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

これは、さきほどのRealmの中の人も言っているように、Realmの次のバージョンでは解消されるようです。

(くわしくは下の動画で解説していますので、よろしければご覧下さい)

blank

こんな記事も読まれています

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)
blank

はじめての方へ

blank
みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

おすすめコンテンツ

プログラミングを学ぶとどんないいことがあるのか
みんプロ式を選んでいただける6つの理由
ぼくの人生挫折ヒストリー(代表者プロフィール)
ぼくのプログラミング挫折ヒストリー(無料メール講座・6大特典付き)
今最も注目のアプリ開発ツール「Flutter(フラッター)」ミニ動画講座

みんプロ式動画講座(コア・Flutter)

ゼロからのFlutter(初級編)-はじめてのプログラミングからアプリリリースまで-
Flutter中級編1-Web通信・設計・状態管理・DIの基礎-
Flutter中級編2-Firebase/地図・カメラ連携等の基礎-
Flutter中級編3-広告/アプリ内課金等の基礎-
Flutter中級編4-Webアプリとレスポンシブデザインの基礎-

みんプロ式動画講座(サテライト)

Flutter/Dartトラブルシューティング・小ネタ集(コア初級編受講で無料プレゼント)
ゼロからのGit・GitHub(コマンドラインツールを極力使わないバージョン管理入門)
Flutter/Dartにおける設計・状態管理・DIの解説集
Dart逆引き大辞典
Flutterにおけるテストの基礎
blank
blank

みんプロ作成アプリ

blank
blank
blank
blank

TOP