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

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

2019-01-01から1年間の記事一覧

WorkManager.getInstanceでIllegalStateException

課題 一部の端末(例えば Zenfone 3など) でアプリが起動しないという事象が発生している。スタックトレースを見るとWokrManagerのgetInstanceするところでクラッシュしていた。 Caused by: java.lang.IllegalStateException: at androidx.work.impl.WorkMan…

View Binding : includeしたファイルのViewが見つからない

課題 View Bindingを使ってみたが、include タグ以下のVIewの情報が取得できない。 原因 Includeファイルに対してidを指定していない。View Bindingはidを付与したものに対してしかコードを生成しない。 対応 includeファイルにidを付与すると、そのファイル…

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

問題 Android Studioから端末にアプリをインストールしようとしたところ以下のエラーが発生。 Unable to find method 'com.android.tools.r8.CompatProguardCommandBuilder.setProguardSeedsConsumer 原因 build.gradle にあるcom.android.tools.r8の設定が…

Android 3.6でビルドエラー

課題 Android3.6がβ版に昇格していたのでアップデートして起動したところ、Gradleのアップデート案内が通知されたので更新したらビルドが通らなくなった。 Gradle Pluginのバージョンを上げたのが原因らしい。 対応 とりあえず app/build.gradle の設定を順…

FragmentStatePagerAdapter

FragmentStatePagerAdapter(fm: FragmentManager)がdeprecatedになってた。 第2引数に BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT か BEHAVIOR_SET_USER_VISIBLE_HINT を 指定するらしいんだけれども BEHAVIOR_SET_USER_VISIBLE_HINT もdeprecatedになってる。…

Android 10 AppTask.moveToFrontが機能しない?

課題 ActivityManager.AppTask.moveToFront()メソッドは現在とは起動中のTaskをForegroundに持ってくるためのメソッド。 これがAndroid 10で機能しなくなっているかもしれない。 全くだめというよりは、うまく前に来ないような。すでに先頭にいるという扱い…

Figmaでコンポーネントを解除する

Figmaは慣れてくると超便利なんだけど、ComponentとFrameとGroupを理解しないと編集時にその便利さが享受できない。 課題 ComponentをFrameに変更したい 対応 Componentは直接は Uncomponent みたいなことができない。 Componentをコピーして同じ場所に貼り…

エミュレータにAPKをドラッグ&ドロップでインストールする

タイトルの通りなんだけど、Android Emulatorにapkがドラッグ&ドロップでインストールできるように なってた。PCからapkをエミュレータの画面上にドラッグするだけ あんまり使うことないかと思ってたけど偶然必要な機会があってやってみたら超簡単に入って…

R8でNullPointerException

課題 Android Stuio 3.5からはProguardよりもR8推奨ってことでR8を有効にした状態で リリースビルドをしようとしたらビルド中にNullPointerExceptionが発生してビルドできなかった。 対応 ググった感じだとOkHTTPを入れているとバージョンによっては発生する…

onActivityResultの呼ばれるタイミングとFragmentについて

課題 Fragment.onCreateViewでViewを生成しているが、onActivityResult内でそのViewを使用しようとした際にエラーになるケースがある。 原因 通常Fragment.onActivityResultはActivity.onStart前に実行され、それまでにはFragment.onCreateViewは既に実行さ…

dpに対応する実際のピクセルサイズを得る

課題 指定したdpサイズに対応する、端末の解像度に応じた実際のピクセルサイズが知りたい。 対応 dimens.xmlを使う。 <resources> <dimen name="user_icon">40dp</dimen> </resources> var size = context.resources.getDimensionPixelSize(R.dimen.user_icon) 関連 takerpg.hatenablog.jp

PicassoでWebP画像を表示する

課題 PicassoでWebP画像を表示したいが、WebPを表示するにはAcceptヘッダーにimage/webpが必要となる。どうすればよいか。 対応 OkHttpClientを作成し、Picasso.Builderを使ってdownloaderにセットする addHeaderの内容はChromeのデフォルト値に合わせてみた…

StethoでPicassoのデバッグを可能にする

課題 Picassoのリクエストヘッダーの内容をStethoで確認したい。 どうすればよいか。 対応 以下のような感じでPicassoの初期化メソッドを用意し、Applicationクラスなどから一度だけ呼んであげれば良い。 BuildConfig.DEBUG がtrueの場合のみ処理されるよう…

AdMobメディエーションリワード動画広告調査メモ

onRewardedイベントでは リワード typeとamountのみ。IDやどのリワード動画サービスかは分からない カスタムリワード動画以外はSDKが提供されているので基本設定で使う分には特殊な実装は不要 テスト時にはテスト端末登録が必要 テスト端末登録を行うとAdMob…

Firebase AnalyticsでBigQueryを使った場合の調査メモ

挙動に関して不明な箇所があったので実際にやってみたメモ DebugViewはユーザープロパティの削除が反映されない(BigQueryには反映されている) DebugViewはユーザープロパティの追加が反映されないことがある(BigQueryには反映されている) 連続して2つセ…

RecyclerView内のアイテムが表示されたタイミングを取得する

課題 RecyclerView内のあるViewTypeのアイテムが表示されたタイミングでImpressionイベントを計測したい。 対応 RecyclerView.Adapter.onViewAttachedToWindow() メソッドをオーバーライドする。 override fun onViewAttachedToWindow(holder: RecyclerView.…

自前でRipple Effectを呼ぶ

課題 Viewに android:foreground="?android:attr/selectableItemBackground" を定義しているが、プログラム上から呼び出して使用したい。 対応 RippleDrawableのstateを変更することでエフェクトが発生するのでstateを変更してあげれば良い。 以下のサンプル…