🔧

[Flutter]v3.24でAAPT: error: resource android:attr/lStar not found.が出た時

2024/11/12に公開

前提

Flutterを3.24.4にアップグレード後、ローカルPCではビルドが通ったが、Codemagicでビルドすると失敗した。

Codemagicのビルド環境

No user-defined environment variables were set

== Use Xcode 16.2 ==
> sudo xcode-select --switch /Applications/Xcode-16.2.app/Contents/Developer
Xcode 16.2
Build version 16C5013f

== Use CocoaPods version 1.16.2 ==
> gem uninstall cocoapods --executables --all
Removing pod
Removing sandbox-pod
Successfully uninstalled cocoapods-1.15.2

> gem install cocoapods --version 1.16.2
Successfully installed cocoapods-core-1.16.2
Successfully installed cocoapods-1.16.2
Parsing documentation for cocoapods-core-1.16.2
Installing ri documentation for cocoapods-core-1.16.2
Parsing documentation for cocoapods-1.16.2
Installing ri documentation for cocoapods-1.16.2
Done installing documentation for cocoapods-core, cocoapods after 1 seconds
2 gems installed

> gem list '^cocoapods$' --no-verbose
cocoapods (1.16.2)

== Use Java version 17 ==
> java -version
openjdk version "17.0.13" 2024-10-15 LTS
OpenJDK Runtime Environment Zulu17.54+21-CA (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM Zulu17.54+21-CA (build 17.0.13+11-LTS, mixed mode, sharing)

== Codemagic CLI tools ==
> codemagic-cli-tools version
codemagic-cli-tools 0.54.3
== Use Flutter version 3.24.4 ==
Flutter 3.24.4 • Dart 3.5.4

発生したエラー

* What went wrong:
Execution failed for task ':uni_links:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
   > Android resource linking failed
     ERROR:/Users/builder/clone/app/build/uni_links/intermediates/merged_res/release/values/values.xml:194: AAPT: error: resource android:attr/lStar not found.

解決方法

1. 対象のパッケージを最新にする

いくつかのパッケージで発生していて、パッケージのバージョンを上げれば解決するものもある。

2. 対象のパッケージがDISCONTINUED

他のパッケージで代替する

3. 代替するのが難しい場合

エラーを調べていると、別のパッケージのissueを発見

https://stackoverflow.com/a/78865504

https://github.com/livekit/client-sdk-flutter/issues/569#issuecomment-2275686786

app/build.gradleのsubprojectsでafterEvaluateでSDKを固定する

subprojects {
    afterEvaluate { project ->
        if (project.plugins.hasPlugin("com.android.application") ||
                project.plugins.hasPlugin("com.android.library")) {
            project.android {
                compileSdkVersion 34
                buildToolsVersion "34.0.0"
            }
        }
    }
}

この設定を入れたところビルドが通りました。
この問題がいずれ解決した際にはおそらく不要になると思うので解決されたタイミングで消すことを忘れないようにしないと。

Discussion