月: 2024年4月

KotlinScriptingを動かしてみる

kotlinでスクリプトファイルを作成して実行できるようにします。

https://kotlinlang.org/docs/custom-script-deps-tutorial.html

macではbrew install kotlinでkotlinをインストールします。

同一ディレクトリ内にスクリプトファイルを書きます。

exclude.kts

fun helloExclude() {
    println("hello exclude")
}

hello.main.kts

@file:Import("./exclude.kts")

println("hello main")
helloExclude()

実行したいファイルの末尾は「.main.kts」にします。ファイル名をこのようにすることで@file:Import()等が動くようになります。

実行するには下記のコマンドを実行します。

$ kotlinc -script hello.main.kts
hello main
hello exclude

AndroidStudioとVisualStudioCodeで試してみたのですが、main.kts側のコード自動補完が効かないのが辛いです。なんかやり方が間違っているのかなぁ。


[JetpackCompose] 画像を表示してクリックリスナーを設定し、波紋効果も効くようにする

JetpackComposeって実装方法色々あってどの方法が良いのか調べるのがちょっと面倒だったりする。結論から言うとIconButtonを使うとできます。ImageやIconでも多分やりかたあると思うけど、波紋効果がデフォルトで効かなかったりクリックリスナーが無かったりするので、IconButtonが一番簡単。

https://m3.material.io/components/icon-buttons/overview

@Composable
fun MyIconButton() {
    IconButton(onClick = {}) {
        Icon(
            painter = painterResource(R.drawable.icon),
            contentDescription = "icon"
        )
    }
}


[Android] ProductFlavorのデフォルトを変更する

AndroidStudioのBuildVariantでビルド方法を変更できます。コードをgit cloneしたばかりとかAndroidStudioを再起動したときにBuildVariantがリセットしたりします。そのときに間違ったBuildVariantでビルドしないように普段開発で使うビルド方法をデフォルトにできます。

build.gradle.ktsを下記のように変更し、sync project with gradle filesを実行します。

android {
  buildTypes {
    getByName("release") {
      isDefault = true
    }
  }
}

buildTypesがreleaseの方をデフォルトに変更できました。productFlavorsでも同じことが出来ます。大きいプロジェクトになるとビルド時間が5分を超えるところもあり、意図しないBuildVariantでビルドしてしまうと中止したとしても時間を無駄にしてしまうので、このような細かいところもちゃんとデフォルト設定しておきたいです。


Retrofit2にBOMが追加されました

https://github.com/square/retrofit/releases/tag/2.10.0

https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit-bom/2.10.0

retrofit:2.10.0からBOM機能が追加されました。

retrofit2の関連ライブラリがいくつかありますが、都度バージョンを確認するのも面倒ですし、バージョン間の依存関係も複雑になりがちなのでBOMを使うことがおすすめされています。

利用例

build.gradle.kts

dependencies {
    implementation(platform(“com.squareup.retrofit2:retrofit-bom:2.10.0”))
    implementation(“com.squareup.retrofit2:converter-jackson”)
}

BOMは他にもcomposeやfirebaseにもあるので積極的に使っていきましょう。