Jetpack DataStore 搭配 kotlinx.serialization Protobuf

上月 kotlinx.serialization 出了 1.0 版。除了支援 JSON 之外,還有支援 Protocol Buffers (Protobuf),而且還是跨平台支援。而在前一個月 Android 出了 Jetpack DataStore,它是一個用來取...

November 14, 2020

Kotlin Annotation Processor

如果有做過 Android 開發的話應該都有用過 annotation processor(又稱 codegen),即是在 build.gradle 入面要用 annotationProcessor 或者 kapt 的那些 dependency。用法大概是在...

April 27, 2020

Kotlin Parcelize

Kotlin Android extensions 入面有一個實驗功能:Parcelize。它是一個 annotation,只需要在 data class 加上 @Parcelize annotation 和 implement Parcelable interface 就能夠在 compile 時自動生成所需的 boile...

February 11, 2018

Parcelable & Intent extra

Android 如果想將自己寫的 data type 的 object 傳到其他 Activity、Fragment 之類的地方的話,就要用 Parcelable 來做 serialization/deserial...

September 16, 2017

SemVer

剛剛為了方便做 force update app 功能的版本號碼比對就寫了一個 Semantic Versioning (SemVer) 的 Kotlin data class。這個 class 有 implement Comparable,是參照 SemVer 規範要比對 major、min...

June 16, 2017

Kotlin for Android

在四月開始轉用 Kotlin 來寫自己的 Android app。其實上年八月左右已經留意到 Kotlin 這個 JVM 語言能在 Android app 開發時使用,不過那時因為沒有太多時間所以只是看了少許官方教...

June 12, 2017

Timber live template for Java/Kotlin

最近轉了用 Kotlin 來寫自己的 Android app,但發現 Android Studio 在 Kotlin 檔案內無法使用 Logcat logd、logm 之類的 Live template。Anko 的 AnkoLogger 因為用了 [Log.isLoggable](https://developer.android.com/reference/android/util/Log.html#isLoggable(java.lang.String, int)) 來包住 Log.d 之...

May 22, 2017

Spek

之前一直都有留意 Kotlin 這個程式語言在 Android app 開發的應用。最近試用 Spek 來做 Android project 的 local test。Spek 是一個用 Kotlin 寫的 testing framework,用法和 Ruby 的 RSpec 差不多。對比 Android project 預設用的 JUnit 4,Spek 的寫法會比較清楚。因為 JUnit 4 只靠 class 和method 來為 test 分類,不能 nested(JUnit 5 才支援)。Spek 就用 nested 的方式來把 test 分類,還有就是用 string 來定義 test 名,比起 JUnit 4 用 method 名較易閱讀。 Spek 有提供 IntelliJ IDEA/Android Studio plugin,而且還有 JUnit platform engine。所以在 Android project 上面使用都沒有太大問題。 ...

April 22, 2017