🐣

【Flutter】google_mobile_adsを1.2.0にアップデートしたときにビルドエラーが発生した

2022/04/01に公開

結果

まず結果として
google_mobile_adsを1.2.0にアップデートし、ビルド自体(flutter build apk)は通りましたが
新たな問題(WARNING)が発生したとこで終了です。

console
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
����:C:\Users\utouhiyoco\Documents\flutter\.pub-cache\hosted\pub.dartlang.org\launch_review-3.0.1\android\src\main\java\com\iyaffle\launchreview\LaunchReviewPlugin.java�͐�������Ȃ�API���g�p�܂��̓I�[�o�[���C�h���Ă��܂��B    
����:�ڍׂ́A-Xlint:deprecation�I�v�V�������w�肵�čăR���p�C�����Ă��������B
����:C:\Users\utouhiyoco\Documents\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_android-2.0.11\android\src\main\java\io\flutter\plugins\pathprovider\PathProviderPlugin.java�̑���́A���`�F�b�N�܂��͈��S�ł͂���܂���B
����:�ڍׂ́A-Xlint:unchecked�I�v�V�������w�肵�čăR���p�C�����Ă��������B

開発環境

  • windows 10
  • flutter 2.5.3
  • Dart 2.14.4
  • android

ざっくり手順

  • google_mobile_adsのバージョンアップ
    • google_mobile_adsを'1.2.0'に変更
  • SDKのバージョンアップ
    • compileSdkVersion及び、targetSdkVersionを'31'に変更
    • buildToolsVersionを'31.0.0'
  • SDKを弄る
    • d8.datを'dx.dat'にファイル名変更
    • d8.jarを'dx.jar'にファイル名変更
  • Kotlinのバージョンアップ
    • Kotlinを'1.5.21'に変更

詳しい手順

google_mobile_ads ^0.11.0+2 → 1.2.0 に変更

pubspec.yamlでgoogle_mobile_adsのバージョンを変更

pubspec.yaml
- google_mobile_ads: ^0.11.0+2
+ google_mobile_ads: 1.2.0

に変更し、flutter pub get

SDKのバージョン変更

ここでビルドを一回通してみようとするとエラーが発生した

console
* What went wrong:
Execution failed for task ':app:checkReleaseAarMetadata'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction    
   > The minCompileSdk (31) specified in a
     dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
     is greater than this module's compileSdkVersion (android-30).
     Dependency: androidx.work:work-runtime:2.7.0.
     AAR metadata file: C:\Users\utouhiyoco\.gradle\caches\transforms-2\files-2.1\014526cbe917f780df005b8a51f68252\work-runtime-2.7.0\META-INF\com\android\build\gradle\aar-metadata.properties.

「てめぇふざけんなよSDK 30だと!?こちとらSDK 31以上じゃねえと動かねえんだよ」
何かよくわかんないけどそのようなことを言ってる気がする
…分かった分かったよ…

compileSdkVersion及び、targetSdkVersionを30 → 31 に変更

android > app > build.gradle にてSDKのバージョンを変更します

build.gradle
android {
-    compileSdkVersion 30
-    buildToolsVersion "30.0.2"
+    compileSdkVersion 31
+    buildToolsVersion "31.0.0"

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        applicationId "com.minaide.hazukasii"
        minSdkVersion 23
-        targetSdkVersion 30
+        targetSdkVersion 31
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

ビルドが通らない…

プラグインのバージョンもアップデートして…
SDKのバージョンも合わせたぞ!
これでビルド通るだろ!!!

console
* What went wrong:
Could not determine the dependencies of task ':app:lintVitalRelease'.
> Could not resolve all dependencies for configuration ':app:lintClassPath'.
   > Could not create task ':app:minifyReleaseWithR8'.
      > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.

えっ「ビルドツール31.0.0が壊れてるから再インストールして…?」
なんじゃそりゃ…わかったよ…

これで一回Apply

もう一回checkをいれてApply

再インストールしたら、もう一回ビルドすっぞ!

console
* What went wrong:
Could not determine the dependencies of task ':app:lintVitalRelease'.
> Could not resolve all dependencies for configuration ':app:lintClassPath'.
   > Could not create task ':app:minifyReleaseWithR8'.
      > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.

_人人人人人人人人人_
> ぴええええええ <
 ̄Y^Y^Y^Y^Y^Y^Y ̄

全く同じ内容の(31壊れてっぞ)エラーを吐いてる…
調べてみると31が難あり?のようで

30にダウングレードすることをひとまず推奨しているようだ。

(特に理由がない場合は、30で良いと思う)

https://unluckysystems.com/【android-studio】ビルド時にエラーinstalled-build-tools-revision-31-0-0-is-corrupted-remove-and-install-again-using-the-sdk-manag/

SDKを弄ります

私はどうしても31にしたい頑固者なので、もう少し調べてみるとこちらの記事を発見

https://stackoverflow.com/questions/68387270/android-studio-error-installed-build-tools-revision-31-0-0-is-corrupted

SDKの2つのファイルの名前を変更すると、ビルドが通るらしい。
(正直公式SDKを弄るのは気持ち悪い…何か問題が起きたら再インストールしてください)

  • d8.bat から dx.bat
  • d8.jar から dx.jar

d8.batからdx.bat

C:\Users\”あなたのユーザー名”\AppData\Local\Android\Sdk\build-tools\31.0.0\d8.bat

C:\Users\”あなたのユーザー名”\AppData\Local\Android\Sdk\build-tools\31.0.0\dx.bat
に変更

d8.jar から dx.jar

C:\Users\”あなたのユーザー名”\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\d8.jar

C:\Users\”あなたのユーザー名”\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\dx.jar
に変更

※注意 lib下

Kotlinのバージョンアップ

ビルドするとまたしてもエラー
今度はKotlin関連で怒られてます

console
Execution failed for task ':app:compileReleaseKotlin'.

素直にバージョンアップしましょう。
古いflutterでパッケージを作成すると、その辺のバージョンも古いようです。
android > build.gradle

build.gradle
-    ext.kotlin_version = '1.3.50'
+    ext.kotlin_version = '1.5.21'

https://zenn.dev/sakusin/articles/3aadbe7f881f35

最後

一度クリーンしたあとにビルドしてみます

flutter clean

flutter build apk

console
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
����:C:\Users\utouhiyoco\Documents\flutter\.pub-cache\hosted\pub.dartlang.org\launch_review-3.0.1\android\src\main\java\com\iyaffle\launchreview\LaunchReviewPlugin.java�͐�������Ȃ�API���g�p�܂��̓I�[�o�[���C�h���Ă��܂��B    
����:�ڍׂ́A-Xlint:deprecation�I�v�V�������w�肵�čăR���p�C�����Ă��������B
����:C:\Users\utouhiyoco\Documents\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider_android-2.0.11\android\src\main\java\io\flutter\plugins\pathprovider\PathProviderPlugin.java�̑���́A���`�F�b�N�܂��͈��S�ł͂���܂���B
����:�ڍׂ́A-Xlint:unchecked�I�v�V�������w�肵�čăR���p�C�����Ă��������B
console
Running Gradle task 'assembleRelease'...                           73.1s
√  Built build\app\outputs\hiyoco-apk\app-release.apk (53.7MB).

げっなんか怒られてる…けどビルド通った…
もう今日はここまでで……力尽きた…けーきたべたい
進展ありましたら、追記します…

同じ問題を抱える方に、少しでも貢献できてたら幸いです…。

Discussion