Android
事象 アプリにログインできない 調査 APIをcurlすると、正常に動作する(サーバーは正常動作してる) Debugビルドで実行すると、正常に動作する(プログラム自体は正常である) サーバーのログを確認すると、送信値のValidationに失敗している Releaseビルド…
AndroidX Roomのコンパイラが不正なJavaクラスを吐き出す Entity(だいたいdata class)に複数のコンストラクタがある場合(Entityをnewする際のサポートのために作ったコンストラクタ)、Kotlin 1.6からRoom Compilerが不正なコードを吐き出すようになった …
コード生成 equals系のオーバーライドで差が出る Android Studioは割と素直にできるし、data classは自動的に行われる VSCode + Dartは標準機能に無いのでExtensionを追加 ただし、Classの記述状況によってはExtensionが生成してくれないので自分でどうにか…
もうすぐAndroid 12がリリースされるので、最低限対応した内容をメモする。 Android Studio AF対応 新AndroidStudioにビルドツールを切り替えた UnitTestをRobolectricからInstrumentation Testをメインに変更 Android Studio AFから、Robolectricが実行しづ…
何が起きたか モジュール分割や様々な工夫をしてビルド時の並列性を高めた 高めすぎて、Ryzen 3950Xの 16コア 32スレッド の能力を超えた並列性を持ってしまった その結果、Gradleのビルドを行うとすべてのCPUリソースを完全に食い尽くすようになった Zoomと…
現状の利点 Jetpack Compose(Beta, production-ready)が使える AS 4.1.xからの移行 Android Gradle Pluginバージョン変更 gradlewバージョン変更 基本的に素直に移行できた。 現状の問題点 Library Projectで問題が出る。 Application Projectでは使えている…
起きた事象 Windows版Android StudioのGradle Sync(像のアイコン押すと走るやつ)が異様に遅い 普通に gradlew 実行だけでも遅い MacやUbuntuだと早い 具体的にはこのくらい Windows: gradlew 40秒, WSL2も同じくらい NVMe PCIe 4.0接続しているので、スト…
やりたいこと interface定義と、その実装をなるべくキレイに切り分けたい インターフェース定義用モジュール // ":interface-module" に定義を書いていく... interface AuthService { fun login(id: String, password: String) } 実装用モジュール // ":impl…
前提 LiveDataのonActive/onInactiveで処理を行わせていた 強制的にLiveDataをactiveにするため、次のようなExtensionを作った LiveDataをactiveにしたいだけなので Observerはナニも処理していない // 強制的にLiveDataをactiveにする fun <T> LiveData<T>.forceA</t></t>…
Windows版のTerminal IntelliJやAndroid Studioの標準Terminalはプラットフォームに合わせて起動する Windowsはcmd.exeが起動 bashのほうがなれてて使いやすい Terminalを変更する Settings > Tools > Terminal > Shell Path 標準だとcmdになってる こんなバ…
Windows版Android Studioは遅い どういうわけかデフォルト設定だと遅い CPUスペックとかに関係なく遅そう Code Completionが遅い LayoutEditorのプレビューが遅い そもそも起動が遅い どうにか高速化したい LinuxとかMacとかでは軽い 原因 Android Studio 3.…
こんな状況は危ない 昔は自社でアプリ開発してたけど、もうメンテしなくなって久しい とりあえずアップしておいて、使う人がいるならソレでいいや 何が起きるか Google Playは年1〜2回くらいはConsoleのアップデートがある アップデートにより、一部のアプ…
XCodeと仲良くScheme設定 だいたいProductionとDevelop環境別れてるんだからSchemeを作成する SchemeとDebug/Releaseの組み合わせに合わせてConfigurationファイルを作成する 何をする用事がなくても、pre buildスクリプトはSchemeごとに設定しておく どうせ…
どういう問題か GAE/Go 1.12にバージョンアップをした サーバー側のUnitTestは通過していた クライアント側のテストを行うと、特定APIがすべて400を返却していた ログが残っていない。少なくともGAEアプリコードに到達していない。 原因 クライアント側で Au…
バージョン "implementation"("androidx.constraintlayout:constraintlayout:2.0.0-beta2") 問題点 MotionLayout配下にFrameLayoutを配置し、動的にコンテンツを入れ替える MotionLayoutはアニメーションで2つのレイアウト間を遷移させている 特定条件下で…
状況 Thinkpad X1 Carbonを購入したので、Ubuntu 19.04をクリーンインストールしてセットアップした Android Emulatorを起動したが、動作が異様に遅い 1〜2fps程度しか動作しない 問題の観察 QEMUはインストール済みで、KVMは正常起動する Dockerが動作して…
なぜコレが必要か? Firebase SDKを組み込んだ処理は、通常 Google Services Plugin と google-services.json をアプリに組み込むことで動作する このPluginはApplicationビルド用のプロジェクトでしか動作しない ライブラリプロジェクトにFirebase SDKを組…
Flutter を使う機会があったので、所管をざっくりと。 個人的に思うFlutterを使う際に留意すべき点 Flutterのレンダリングは Skia ベースの独自エンジンで動いている Android的に言えば、どんな画面もView1枚である Plugin実装を読むと、 TextureId を取得…
Parcelize拡張概要 Androidアプリ開発者にとってメンドウな Parcelable の定形実装を自動化できる Annotationをつけるだけで、フィールドを全部Parcelableに突っ込んでくkれる 突っ込めないオブジェクトは警告が出る Annotationで除外を指定できる Example /…
サーバーサイドの世界では、micro-servicesとか流行ってるね Androidの世界で、microな設計思想は取り入れられるのか? Androidアプリのmoduleはどこまで分けられるのか? Domain Bridge ドメインで定義したServiceの実装詳細を書く Factory どのブリッジを…
Package名の命名規則を、メジャーな形に統一したい プロジェクト内で統一したかった package.name.hoge.fuga package.name.hoge_fuga package.name.hogeFuga あたりの競い けど snake_case はLintで怒られる allword は単語登録が毎度必要になる cammelCase …
早期移行する理由 coroutinesのstable版へ移行したい 移行時の問題点を洗い出しておきたい 対応箇所 /build.gradle buildscript { // 本体とcoroutinesのそれぞれのバージョン // coroutinesは標準機能に昇格したが、Android(及びJVM)用ライブラリは別途配…
最初にやるべきこと Jetpack-KTXを探す 公式拡張関数を探す 拡張関数(プロパティ)を使う場合 単体で存続できるケースは拡張関数を許可する 仮にこの拡張関数が属するライブラリと離婚することになっても、この処理は容易に移行できる // DO val Context.de…
coroutines 0.26.1の変更点 多くのクラスやトップレベルfunctionやプロパティがdeprecatedになった 変更から見える方針 トップレベルの関数やプロパティを、いずれかのobject等に所属させることが主な目的に見える 主なDeprecated UI, CommonPool 等の標準Di…
既知の問題点 Gradle Pluginバージョンは com.android.tools.build:gradle:3.3.0-alpha10 google-services.jsonを検索しない 考えうる限りいろんなpathにおいたけど反応なし ログも --debug オプションで見たが吐き出されない 完全にnot workingらしい 4.0.2…
問題点 Find Action(Ctrl + Shift + A)が正常動作しない たまに正常動作する だいたい正常動作しない Crash Reportが吐き出されてるので、どっかのPluginと競合している Reportは送った 以前はFlutter Pluginと競合していたので、uninstall済み Dartも怪し…
QRコードもカメラも物理デバイスである QRコードは対象物の物理サイズにも留意して作成する 小さすぎると、カメラに映ってもオートフォーカスが正常動作しない場合がある レンズが汚れていると更に辛い フロントカメラは概ね低スペックなので、バックカメラ…
導入前 shellスクリプトを必要に応じて書いていた どういうビルドタスクやスクリプトがあるのか、ドキュメントが面倒だった 導入した理由 ビルドタスクの一覧性を担保できる fastlane list でタスク一覧が表示される タスクを分類できる fastlane platform_f…
変更されたこと runBlockingがUIスレッドからの呼び出しで例外を投げるようになった UnitTestの内部とかで使ったり、無理矢理coroutinesのChannelとかを待ち合わせる用途に使えなくなった 特にJVMでのUnitTestで使ってたので、全部死んだ // この呼び出しは…
購入 / 選定理由 会社に開発端末(普段使いを兼ねる)を返却するにあたり、新規に端末が必要になった 選定で重視した点 ARCoreが使用できる 基本スペックが良い カメラ性能が良い 端末サイズは問わない 今まではサイコンにする兼ね合いからXperia Compact系…