為さねば成らぬ

retia.verno@gmail.com

Android

RIP: タスクkill系アプリ

結論 Androidのタスクkill系のアプリがお亡くなりになりそうです 背景 Android 14 DP2出ました。DP1から以下の項目が増えています。 Apps can kill only their own background processes killBackgroundProcesses() というバックグラウンドプロセスをkillす…

Android LintのDetectorを読む Day6: MergeMarkerDetector

ソースコード https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/MergeMarkerDetector.java Issue category: CORRECTNESS priority: 8 severity: E…

Android LintのDetectorを読む Day5: CallSuperDetector

ソースコード https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/CallSuperDetector.kt 背景 メソッドがoverrideされるときに、親クラスのメソッド…

[Android] (WIP) Android LintのDetectorを読む Day3: AllCapsDetector

ソースコード https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/AllCapsDetector.kt 背景 TextViewでtextAllCaps=trueだとテキストに含まれるマー…

Android LintのDetectorを読む Day2: AlarmDetector

ソースコード https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/AlarmDetector.kt 背景 高頻度のアラームはバッテリーに悪いため、API 22からは最…

Android LintのDetectorを読む Day1: AddJavascriptInterfaceDetector

https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/AddJavascriptInterfaceDetector.kt 背景 WebView#addJavascripInterface によりアプリからオブ…

Jetpack Composeを触る時は

結論 リリースノート開いておけ! 解説 Jetpack Composeは開発中のライブラリであり、新たな機能ができては名前を変えていきます。 あなたが見たJetpack Composeのドキュメントは書かれたときそのバージョンでは正しいものですが、今やろうとしてあなたが入…

jCenterクローズで影響が出るライブラリの一覧を出す

課題 今更ですが。 jfrog.com jCenterクローズの影響調査として、jCenterにだけ上がっててmavenCentralにないライブラリを一覧で出したい。 解決方法 build.gradleから buildscript.repositories に定義してある jcenter() を削除、定義していない場合は変わ…

Robolectric導入したけどエラーが出る

課題 Robolectric導入して、 @RunWith(RobolectricTestRunner.class) を書いたはいいが、 java.lang.UnsupportedOperationException: Failed to create a Robolectric sandbox: Android SDK 29 requires Java 9 (have Java 8) のエラーが出る 実装 @Config(s…

SHA証明書フィンガープリントを取り出す

課題 Firebaseに設定する、証明書フィンガープリントを取得したい。 実装 apkから取得する keytool -list -printcert -jarfile target.apk keystoreから取得する keytool -list -v -alias name -keystore keystore.jks apkに署名する際に用いるalias / key s…

GsonでtoJsonする時にフィールドをsnake caseにしたい

背景 Kotlinで書いてると通常クラス名やフィールド名はCamelCaseにする。 ネイティブのクラスをJavascriptに渡そうとする時にsnake_caseとして扱われることがある。 課題 JavascriptにわたすためにクラスをJsonの文字列に変換したいが、フィールド等がCamelC…

dagger hiltを試す

背景 Daggerのサポートライブラリが出ていた。 以前から仕事等で使っており、依存性解決がビルド時に行われdagger起因のランタイムエラーが起こらないのが好みだったが、やはりわかりにくさが一番のネックだった。設定に追記はできるけど新しく書き直すのが…

リリースしようとしたらネイティブサポートが減っていた

背景 Google Play Consoleからアプリのアップデートをリリースしようとした 課題 警告が出ていて、よく見ると前回のapkからネイティブサポートの値が減っている(mips) before after このアプリの対象端末数は変換がないのでおそらくリリースに影響はないだろ…

Format /topics/topic-name is deprecated. Only 'topic-name' should be used in subscribeToTopic.

Logcatに出るメッセージ。 FirebaseMessaging.subscribeToTopic/unsubscribeFromTopicのトピック名に/topics/ のprefixをつけるなということらしい。 ちなみにこれらメソッドの頭で public Task<Void> subscribeToTopic(String var1) { if (var1 != null && var1.s</void>…

Android 9でWebViewでhttpのページがひらけない

背景 アプリ内で(まだ!)WebViewを使って簡易ブラウジングを行える部分がある。 URLをアプリで取り扱う時、基本的に次の3つがある WebView Chrome Custom Tab Intentで外部に投げる intentで投げると自アプリから離脱することになるのでやりたくない。 またC…

WorkManagerの定期実行は思ったより定期実行ではない

WorkManagerでは2種類のWorkRequestが作成できる。 ひとつはOneTimeWorkRequest。 1度だけ実行されるので通常はこちらを使う。 もうひとつはPeriodicWorkRequest。 キャンセルするまで複数回実行される、とある。 ただ、注意するべきは実行時間を指定できな…

PowerMock辛いよねという話

今触っているアプリは僕がJoinした時点でPowerMockを使っていたわけだが、非常に辛いです。 class HogehogeManager() { private val fugafuga: Fugafuga } val mockedManager = PowerMockito.spy(Whitebox.newInstance(HogehogeManager::class.java)) Whiteb…

Android StudioでRobolectricでテストを走らせるとVerifyErrorが出る

以下のようなエラーが出ることがある java.lang.VerifyError: Expecting a stackmap frame at branch target 10 テストのConfigにVM optionsに -noverify を追加する。 (テスト) > Edit Configurations... > Configuration > VM options:

Droid Kaigi 2019 実際に使いたいものをまとめる

カンファレンスとか勉強会出た時って、そのときは「おもしろーい」と思うセッションでも、結局普段の業務に活きなかったり、なかなか試してみずらかったりします。 今回のDroidKaigiでは試してみたい!というセッションが多かったので、忘れないうちに今後や…

DroidKaigi 2019 Day1

DroidKaigi 2019行ってきました。Day1。 今年もコントリビュートしてます。といいつつバグ仕込んでて申し訳ない・・・ なんか映ってたらしい pic.twitter.com/Qr7t2rr5Xd— verno3632@おなかペコい (@verno3632) February 7, 2019 以下参加したセッション。と…

Junit5を導入する

GitHub - mannodermaus/android-junit5: Testing with JUnit 5 for Android. build.gradleに入れるだけ。 // build.gradle buildscript { dependencies { classpath "de.mannodermaus.gradle.plugins:android-junit5:1.2.0.0" } } // app/build.gradle apply…

Viewのアスペクト比を動的に設定する

参考: stackoverflow.com ImageViewを表示する時あらかじめアス比を指定したい。 この場合はImageViewをConstraintLayout直下に入れてdimentionRatioを設定する。 <android.support.constraint.ConstraintLayout ... > </android.support.constraint.constraintlayout>

なんとなしで使ってたDataBinding

なんとなく使ってた結果最近はまったDataBinding. onClick developer.android.com android:onClick="@{(v) -> v.isVisible() ? doSomething() : void}" 公式にもあるが、onClickを設定する場合はこの形にする。(v) でvには()をつける。 ()つけない android:o…

Unused Resources RemoverでdryRun実行する

github.com Unused Resources Remove for Android めっちゃ便利ですよね 。 今までの類似ツールと比べて誤判定少なくてありがたいです。 dryRunする場合にはbuild.gradleにオプションを指定します。 unusedResourcesRemover { dryRun = true } ただこれだとd…

デバッグ実行がやたら遅かった

デバッグ実行(debug buildではない)すると重くなるという事象が発生していた。最初のActivityが起動し終える前にANRと判定されるくらい重い。 いろいろいじったがkotlin-gradle-pluginのverを1.1.60から変えたら直った。 別のプロジェクトでやってみたら1.1.…

一歩進んだActivity Transitionの実装

この投稿はAndroid その3 Advent Calendar 2016の20日目の記事です。 背景 Android 5.0からActivity Transitionが追加され、画面遷移のアニメーションをカスタマイズできるようになりました。 Activity/Fragment Transitionsのつかいかたを書いたのもアドベ…

SlidingUpPanel ver3.0

いつのまにかver3.0になってました。 umano/AndroidSlidingUpPanel umano/AndroidSlidingUpPanel · GitHub 移行のために変更したところのメモ (https://github.com/umano/AndroidSlidingUpPanel/releases/tag/3.0.0) attributesのprefix追加 すべてに umano …

R.java が見つからない

Android作っている時によくあるのがRが見つからずリソースへの参照が出来ないこと。 対処法を今まで経験した対処法をいくつかまとめてみる。 (Android Studio) Build > Clean Project とりあえずやっとけ感 Tools > Android > Sync Project with Gradle File…

PxViewer

Android用pixiv閲覧アプリPxViewerようやく公開。 http://bit.ly/hUE2Zzダッシュボードからの主な機能は検索・現在のランキング・マイページ。 検索では通常のタグ、タイトル・キャプション検索に加えてpixortさんの検索も行えます。ランキングはデイリー・…

Pixivビューア

AndroidでPixivビューアがニコニコとかに比べてなんで少ないのかちょっと考えてみる・公式が優秀 評価のとおり非常によくできてる。と思う。特にブラウジング行うって点で快適。 でもR-18のランキングとかないよね?・いろいろ取得がめんどい iphone.pxv.jp…