Androidアプリ開発中に遭遇
▼ ビルド中にこういうエラー
1 |
AAPT: error: unexpected element <queries> found in <manifest>. |
初めて見たエラーです。
直すのに少しだけ苦戦したので、
このエラーの原因とか直し方を記録しときます。
このページの目次
AdMobを最新にアップデートしたときに発生
キッカケはAdMobライブラリを更新したとき
▼ build.gradleでこういう記述をしていた
1 2 |
/// AdMob implementation 'com.google.android.gms:play-services-ads:18.3.0' |
今までは 18.3.0 を使っていたのですが、Android Studio が「最新版の19.8.0を使ったほうがいいよ」と提案してきたからアプデすることにしました。
▼ そこで最新版を入れようとしたが・・
1 2 |
/// AdMob implementation 'com.google.android.gms:play-services-ads:19.8.0' |
▼ 冒頭の謎エラーに遭遇してしまった
1 |
Android resource linking failed C:\Users\xxx\.gradle\caches\transforms-2\files-2.1\xxx\play-services-ads-lite-19.8.0\AndroidManifest.xml:27:5-43:15: AAPT: error: unexpected element <queries> found in <manifest>. |
マニフェストファイル内に <queries> というタグが見つからないというエラーが出てます。アプリではなくPlay-Services-adsのManifest.xml で起きたみたいです。
そこで試行錯誤して直すことに
このエラーを直すまでに行ったこと
次の2つを試したらエラーが消えました。
Gradleそのもののバージョンを上げる
まずはGradleのバージョンを上げました。
バージョンはbuild.gradleに定義されてます。
▼ プロジェクトレベルのbuild.gradleの次の部分
1 2 3 4 5 6 7 8 9 10 |
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' /// ▲ ここ } } |
これが 3.5.3 になっていますが、現在は4.0.2が使用可能
▼ このように修正
1 2 3 4 5 6 7 8 9 10 |
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.0.2' /// ▲ 最新に修正 } } |
修正後は [Sync Now]するのも忘れずに
2.Gradleの最小バージョンを引き上げる
そしたら別のエラーが出てしまいました。
1 |
Minimum supported Gradle version is 6.1.1. Current version is 5.4.1. |
どうやらGradleの最低バージョンを6.1.1にしろと言っているようです。ここでのバージョンはbuild.gradleで定義されたバージョンではなく配布バージョンのことです。
そこでgradle.wrapper.propertiesを編集しました。
▼ 修正する前の内容
1 |
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip |
▼ このように修正した
1 |
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip |
そして[Sync Now]を押すとエラーが解消!
ビルドも正常に行えるようになりました。
あとAdMobも最新版にアップデート完了
unexpected element <queries>... の対処法まとめ
ということで原因と対処法をまとめます。
- 原因
一部のライブラリをアップデートしようとしたとき、Gradleが最新バージョンが必要なことがある。それが未対応の場合、このエラーが出るのかもしれない
- 対処
まずプロジェクトレベルのbuild.gradleでGradleバージョンを最新にアップデート。そのあとgradle.wrapper.propertiesにて最初バージョンも引き上げた
大抵はこれで解決するはずです。
もし間違いなどあればご指摘ください。
ではまた バイバイ(^^)/~~~