Android
起きた事象 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系…
Manifest設定 システムレイヤーへの描画は専用のPermissionがある <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> WindowManagerでViewを登録 レンダリング用のViewとタップ用のViewを分けると設計が楽になる場合がある SurfaceViewは軽量だが、View移動ができない OpenGL側でViewportを調整してあげると</uses-permission>…
Experimental設定が追加 Navigation Editorが標準で無効化された 新たに Settings > Experimental が追加された そこで有効化できる 旧バージョンからアップデートしてビルドが通らない ~/.gradle/ を削除することで復旧できる ASの場合は Invalidate Caches…
ARCoreのサポート端末 少し前にサポート端末が拡充された Nexus5X, Nexus6Pがサポートされた Xperia XZ1Compactもサポートされた 一般的に使うには辛い ARKitのほうは手軽で強い コアライブラリ ARCore by Google コアライブラリ これがないと始まらない ア…
Kotlinアップデート 1.2.50 ConstraintLayoutのpackage名がもとに戻っていた 幻だったのだろうか implementation/apiでbuild.gradleに記述した依存関係がビルドに反映されない Jetifierが悪さをしている可能性がある こいつらを gradle.properties から外す…
Moduleの依存グラフが表示されるようになっていた いつからだろうか Build Variants > i アイコンから見れる 依存Moduleの依存は見れない app > sdk > ktx のような依存グラフにはなってない そのうち改善される? Android API-28公開 これでライブラリ公開…
どういうことがしたいのか こんなUIをMVVMで簡潔に実現したい。 ユーザーに心拍数(下限、上限)等の一定範囲データを設定させる その際、実装コストを減らしたい なるべく現代的に仕上げたい UIは RangeBar を利用する RangeBarを操作すると、対応する値が…