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

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

setProguardSeedsConsumerメソッドが見つからない

問題

Android Studioから端末にアプリをインストールしようとしたところ以下のエラーが発生。

Unable to find method 'com.android.tools.r8.CompatProguardCommandBuilder.setProguardSeedsConsumer

原因

build.gradle にあるcom.android.tools.r8の設定が邪魔していたらしい。すでにR8はgradleプラグインに含まれているようだ。

対応

classpath 'com.android.tools:r8:1.5.68'
classpath 'com.android.tools.build:gradle:3.6.0-beta01'

となっていたのを

classpath 'com.android.tools.build:gradle:3.6.0-beta01'

に変更

参考

Android R8 Unable to find method - Stack Overflow

Android 3.6でビルドエラー

課題

Android3.6がβ版に昇格していたのでアップデートして起動したところ、Gradleのアップデート案内が通知されたので更新したらビルドが通らなくなった。 Gradle Pluginのバージョンを上げたのが原因らしい。

対応

とりあえず app/build.gradle の設定を順にコメントアウトしていったら testBuildType を外した時点でビルドが通った。 なので以下の行を削除して対応。

android {
        ...
        testBuildType "staging"
    }

必要になったらまた考えよう。

FragmentStatePagerAdapter

FragmentStatePagerAdapter(fm: FragmentManager)がdeprecatedになってた。
第2引数に BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTBEHAVIOR_SET_USER_VISIBLE_HINT
指定するらしいんだけれども BEHAVIOR_SET_USER_VISIBLE_HINT もdeprecatedになってる。
なので BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT の1択っぽい。

これを採用すると、ViewPager上、ユーザーに見えてるページ以外はonStartまでで停止し、onResumeが呼ばれなくなる。 なのでonResumeのタイミングでPVイベントなどを発行することができる。 これまでページ変更イベントを拾って面倒な処理書いてたのが簡略化できそう。