前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Android: android gradle pluginを7.0.4から7.1.1にアップデートする

内容

少し前からGradle 7.1.1にアップデートしろとの案内が出ていたが、対応できずにいたものをまとめて対応。 同じようなタイミングでターゲットSDKも変えたのでもしかしたらそちらの影響もあるかも。

基本的にはUpgrade Assittantが勝手にやってくれるが、 案内通りにすすめると何箇所かでエラーになったので対応した。
以下は比較的特殊な対応だった部分の抜粋

build.gradle.kts(:app)

namespace の記述

AndroidManifestに書いていたpackage属性の代わりになる模様。

// build.gradle.kts(:app)
android {
    namespace = "com.hoge.fuga"
}
Lintの記述を更新
// Old
    lint {
        isCheckDependencies = true
        isAbortOnError = false
        isCheckReleaseBuilds = false
        disable("InvalidPackage")
        disable("ResourceType")
    }
// New
    lint {
        checkDependencies = true
        abortOnError = false
        checkReleaseBuilds = false
        disable.add("InvalidPackage")
        disable.add("ResourceType")
    }

AndroidManifest

package属性の削除

今後はbuild.gradleの方でnamespaceを使うらしい

// Old
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hoge.fuga">
// New
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
環境ごとの差分ファイルにtools:replace="android:name"をつける

AndroidManifestが複数ある場合の マージルールの適用が厳格化されたのか、エラーになるようになったので対応。 自分のケースではActivityの重複定義されているという扱いになっていたので優先度の低い方にreplace属性をつけて対応(高い方だとエラーになった)。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application>
        <activity
            android:name=".activity.HogeFugaActivity"
            android:exported="true"
            tools:replace="android:name">