Flutter: Could not resolve all artifacts for configuration ':image_picker_android:debugUnitTestRuntimeClasspath'のエラー

結論:gradle-wrapper.propertiesとandroid/build.gradleを修正、もしくはgradle.propertiesに追記

2022/11/11 Flutter エラー・バグ日記

 

古いプロジェクトを、Androidエミュレーターで久しぶりにリリースビルドしたところ、以下のエラーが発生。

 

・・・(中略)・・・
Execution failed for task ':app:lintVitalRelease'.
> Could not resolve all artifacts for configuration ':image_picker_android:debugUnitTestRuntimeClasspath'.
   > Failed to transform bcprov-jdk15on-1.68.jar (org.bouncycastle:bcprov-jdk15on:1.68) to match attributes {artifactType=processed-jar, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for JetifyTransform: /Users/######/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/*******/bcprov-jdk15on-1.68.jar.
         > Failed to transform '/Users/######/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.68/*******/bcprov-jdk15on-1.68.jar' using Jetifier. Reason: IllegalArgumentException, message: Unsupported class file major version 59. (Run with --stacktrace for more details.)
           Suggestions:
            - Check out existing issues at https://issuetracker.google.com/issues?q=componentid:460323&s=modified_time:desc, it's possible that this issue has already been filed there.
            - If this issue has not been filed, please report it at https://issuetracker.google.com/issues/new?component=460323 (run with --stacktrace and provide a stack trace if possible).
・・・(以下略)・・・

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかはあまり載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

解決法①:設定ファイル内のgradleのバージョンを上げる

エラー文中で、「image_picker_android」というキーワードが目についた。

 

確かに、このプロジェクトでは「image_picker」パッケージを使っていたので、このキーワードを含む前後のエラー文でググってみた。

 

すると、以下の記事(スレッド)が見つかった。全く同じエラーが報告されている。

 

 

1つ目の解決策として、「lintOptions」を修正する内容が書かれていたが、コードのチェックをしてくれる「lint」の機能を弱めそうなので、気が進まず。。

 

2つ目の解決策を見ると、「image_picker_android」が「gradle 7.1.2」を使用するようになったので、それに伴って、下記のとおり2つの設定ファイルのgradleバージョンを更新せよ、とあった。

 

(1)android/gradle/wrapper/gradle-wrapper.properties の「distributionUrl」を以下の内容に修正

 

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
# 自分の環境では、修正前は gradle-6.7.1-all.zip だった

 

(2)android/build.gradle の「classpath」を以下の内容に修正

 

classpath 'com.android.tools.build:gradle:7.1.2'
// 自分の環境では、修正前は gradle:4.2.2 だった

 

確かに、上記のとおりに修正し、リリースビルドしたら、エラーは解消された。

 

なお、「image_picker_android」の「gradle」バージョンについては、「image_picker」のパッケージのページから辿れる、以下の変更履歴ページに記載があった(バージョン0.8.5の説明部分)。

 

 

解決法②:エラー文中にある「issuetracker」の回答に従う

エラー文をよく読むと、「Suggestions:」として、下記リンク先の「issuetracker」に、対処法が掲載されている可能性がある、と書かれていた。

 

 

このリストの中の「Flutter run --release command giving error」というタイトル(ID:258744700)のイシューが、自分の状況(リリースビルドでのエラーの話)と似ていた。

 

内容を確認すると、対処法として、以下のGitHubのイシューが紹介されていた。

 

 

結論としては、「android/gradle.properties」に、以下の1文を加えよ、とのこと。

 

android.jetifier.blacklist=bcprov-jdk15on

 

コメントへの高評価も多数ついているので、これで間違いなさそう。

 

そこで、解決法①で行った修正を元に戻し、この1文を加える方法を試したところ、確かにこの方法でもリリースビルドのエラーは解消された。

 

この方法の方がシンプルかもしれないが、正直、何をやっているのかは理解できず。。

 

「bcprov-jdk15on」をブラックリストに登録する?ということのようだが、、。

 

「bcprov-jdk15on」について調べてみるも、よく分からず。。後でまた調査することにする。

 

 

とは言え、Flutterのエラー文はとても親切なので、しっかり読む事が重要だと、改めて認識。

 

\一般的なエラー対処法をまとめた記事はこちら/

 

リリースしたアプリ(全てFlutterで開発)

暗記用マーカー – シンプル穴埋め問題作成

Google Play で手に入れよう
Download on the App Store

 

超即ToDo –最短2タップで通知登録できるタスク管理アプリ

Google Play で手に入れよう
Download on the App Store

 

かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載

Google Play で手に入れよう
Download on the App Store

 

シンプルメモ帳「BasicMemo」 – 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載

Macのデスクトップ版もリリースしました。

Google Play で手に入れよう
Download on the App Store

 

個人アプリ開発で役立ったもの

おすすめの学習教材

 

超初心者向けでオススメな元Udemyの講座/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 – Dartの要点をつかむためのクイックツアー

 

おすすめのソフトウェア

安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/

 

\アイコン作成・画面設計・クラウド保存…何でもできて超必須

 

おすすめのハードウェア

\リーズナブルな価格で検証端末を確保できる/

 

\目線の高さを調節しやすく、疲れにくい

 

\キータッチが超静音で心地よい/

 

おすすめのサポートアイテム

\部屋の中を仕切って、集中できる開発環境を作れる/

 

\部屋の中でも大き過ぎず、長時間座っても疲れない

 

\バグと格闘した後の肩こりを解消してくれる/

タイトルとURLをコピーしました