アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

IntelliJ IDEAでアップデートしたらクリックが効かなくなった場合

クリックしても何も反応しない場合、IntelliJ IDEAを動かしているJavaのバージョン(Java Runtime)を変更する事で直ることがあります。 Shiftを2回押して検索パネルを開いて choose runtime とか打ちます。そこからバージョンを戻したり、最新にしたりを試し…

lightweightとheavweightとは【Java AWT】

SwingやAWTを使用する時にWindowsのAPIを叩きたい時にネイティブウィンドウハンドル(HWND)を取得したい場合があります。 heavweightはネイティブスクリーンリソースに紐付けられている為、HWNDが取得できますが、lightweightはネイティブに紐付けられていな…

Jetpack Compose Desktop 0.3->0.4のマイグレーション

自分の観測したものだけですが、記述します。 バージョン from: 0.3.0-build152 to: 0.4.0-build168 build.gradle.kts 0.3.0 compose.desktop { application { mainClass = "MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Ms…

Enumを扱う【kotlinx.serialization】

Enumもカスタムタイプのパースと同じく、 Serializer を作成しなければなりません。Jacksonは @JsonCreator と @JsonValue だけでできるので、少し面倒に感じましたが、メリットはあります。 Stringの値でパースする abstract なシリアライザを作成しました…

Apollo KotlinでCustomTypeを使用する

GitHub APIで使用していたら、一部がAnyになってしまいました。 以下のようなファイルが生成されていました。 これを2つの工程で好きな型に変換します。 // AUTO-GENERATED FILE. DO NOT MODIFY. // // This class was automatically generated by Apollo Gr…

テキストとrippleのテーマを上書きする【Jetpack Compose(Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 本文 PopupMenuを作成するのに黒くしたいなということで行いました。 CompositionLocalProvider を使用して上書きします。 CompositionLo…

フレームなしウィンドウをダブルクリックで全画面化する【Jetpack Compose Desktop】

バージョン情報 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 本文 フレームなしウィンドウを作成してウィンドウを移動させるまで【Jetpack Compose Desktop】 の続きになります。 https://matsudampe…

フレームなしウィンドウを作成してウィンドウを移動させるまで【Jetpack Compose Desktop】

バージョン plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 目標 こんな感じのを作ります。 フレームを消す これだけです。 fun main() = Window( undecorated = true, ) { } 移動する これが大変です。…

Listを作成する【Jetpack Compose (Desktop)】

バージョン情報 0.3.0 で LazyColumnFor が無くなって、LazyColumnに統合されたようなので、そちらを使用します。 plugins { kotlin("jvm") version "1.4.30" id("org.jetbrains.compose") version "0.3.0-build150" } 古い情報はこちら。 https://matsudamp…

ネットワークからの画像読み込み【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 以下のようにImageBitmapに変換して返す関数を作成しました。ついでにキャッシュもしてみました。 object ImageUtil { private val cache…

@ComposableのライフサイクルとCoroutine【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 注釈 0.3.0-build150 CompositionLifecycleObserver は RememberObserver に名前が変わりました。 ライフサイクル ライフサイクルは以下…

Listを作成する(deprecate:0.2.0)【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 0.3.0 で LazyColumnFor が無くなって、LazyColumnに統合されたようなので、最新情報はコチラを見てください。 https://matsudamper.hate…

UIを組むためのDSLとデータの持ち方の考え方【Jetpack Compose (Desktop)】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } 考え方 普通のKotlinの書き方と全く異なります。Kotlin-Nativeで freeze というものがあるのと同じくらいには違います。Kotlin-NativeやK…

Jetpack Compose Desktopに入門【背景+スタートアップ編】

バージョン情報 plugins { kotlin("jvm") version "1.4.20" id("org.jetbrains.compose") version "0.2.0-build132" } Jetpack Composeに入門してみる Android開発者(Gradleが触れる) AndroidのJetpack Composeは触ったことがない 動機 モダンなJavaのGUI環…

GitHubのPRの自動アサインで自分だけアサインされない

前提 https://docs.github.com/en/github/setting-up-and-managing-organizations-and-teams/managing-code-review-assignment-for-your-team 上記の機能でPRへ自動アサインされるようにチームで設定しています。しかしこれが自分だけ割り当てられませんでし…

【Android R(30)】全画面表示の方法【Compatあるよ】

執筆日時 2020/12/31 新しいWindowInsetsController ActivityのonResumeで以下の処理を行います。 window.insetsController?.hide( WindowInsets.Type.statusBars() .or(WindowInsets.Type.navigationBars()) ) window.insetsController?.systemBarsBehavior…

【好きなFlowを作成する】LiveDataのような挙動の上位互換のFlowを作成する

基本的にMutableStateFlow使っておけば良いと思いますが、LiveDataのように変更が無くても常に値を流したいという要件がありました。 以下のようなFlowが欲しい 最新の値を取得できる これは StateFlow の特徴ですね。 public interface StateFlow<out T> : SharedF</out>…

【Kotlin】ライブラリにInterfaceと同じ大文字から始まる関数がある理由

環境 Kotlin Coroutine 1.4.2 問題 このような関数があります。実装は StateFlowImpl ですが、わざわざ MutableStateFlow という関数を作ってそこから作成させるようになっています。 @Suppress("FunctionName") public fun <T> MutableStateFlow(value: T): Mu</t>…

Docker備忘録

書き途中 docker build DockerfileからDocker Imageを作成する。 docker build <docker ファイルがあるディレクトリ> 名前が無くて不便。 REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 52a532256932 27 minutes ago 1.23GB -t で名前とタグ(バージョン等)が付けられる。 docker build <docker ファイルがあるディレクトリ> -t name:1.0 R</docker></none></none></docker>…

Java Agentで実行時にクラスを差し替える

Java Agentとは java コマンドを実行するとhelpが出力されるわけですが、そこにJava Agentについて書いてあります。 -javaagent:<jarpath>[=<options>] Javaプログラミング言語エージェントをロードする。java.lang.instrumentを参照 Instrumentとは 既存のアプリケーションを</options></jarpath>…

IntelliJの文字化けを直す

修正 以下を追加します。 -Dfile.encoding=UTF-8

【IntelliJ 2020】Command line too longを回避する

環境 Android Studio 4.2 Canary 15 を仕様しています。 ベースのIntelliJのバージョンはちょっと不明ですが、IntelliJ2020.1.4 ではこの設定が有るようです。 https://stackoverflow.com/questions/49039414/intellij-command-line-is-too-long-shorten-com…

Android Qからの画像保存

AndroidQからはファイルを保存してギャラリーで見るだけなら WRITE_EXTERNAL_STORAGE が必要ではなくなりました。 AndroidManifest Q(29)からは必要でない -> 28までは必要ということで、 AndroidManifest.xml で以下を指定します。 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> https://developer.andr</uses-permission>…

【Android】ActivityResultContractってなんだ

startActivityForResult , onActivityResult は廃止されます。これに関しては既に内部的には ActivityResultContract 等を使用するように置き換えられています。 用途 Intentを作成して起動( startActivityForResult ) -> 結果を受け取るもの( onActivityRes…

WSL2でdockerを使う。

WSL2はほぼ動かないコマンドはありません。dockerも使えるようになったので入れて見ましたが、色々間違えたりもしたのでそれも合わせて紹介しようと思います。 間違い編 Ubuntuでの入れ方の記事を見て、それをそのまま試せば良いんだろ。 -> 一応動いたもの…

【Android】zxing-android-embeddedで縦画面で起動する。

デフォルトで横になる原因 AndroidManifestに定義されているから。

gradle dependencies treeの読み方

facebook SDKを含むAndroidアプリの依存を解決してみました。 省略 (*) 既に別の場所で出力されているので子の依存を省略 推移的依存解決 -> 別のライブラリ等の定義で新しい物が使用されていたのでそちらを使用する 出力された依存グラフ +--- com.facebook…

【仕事用プロファイル】ユーザーを指定してアプリをインストールする

Androidは複数アカウントを持てたり、仕事用プロファイルがあったりします。Android Studio(adb install)ではデフォルトで全てのユーザーにアプリが入っていしまうので、コマンドで指定してインストールします。 ユーザー取得 adb shell dumpsys user | grep…

【Windows】Exoplayer Flac Extensionを使う

環境 Windows WSL2 コマンド git clone git@github.com:google/ExoPlayer.git ExoPlayer\extensions\flac\src\main\jni\Application.mk APP_OPTIM := release # APP_STL := c++_static APP_STL := c++_shared APP_CPPFLAGS := -frtti # APP_PLATFORM := andr…

Kotlin1.4の変更点

以下をざっと紹介しいきます。 https://kotlinlang.org/docs/reference/whatsnew14.html SAM変換 Androidで言うと setOnClickListener がよく使っていると思います。 public interface OnClickListener { void onClick(View var1); } JavaのInterfaceで関数…