上架的App發生違反侵犯商標權政策的問題

突如其來收到Google Play的通知信✉️,也沒想過會遇到這種狀況,原因是因為之前寫了一支可以用來抓Instagram公開帖子的原始照片的app,然後在取名的時候想說要跟Instagram有點關聯,所以用了Gram作為app名稱的一部分,也就是因為這樣侵犯了商標權,被Instagram申訴了,這應該可以算是某種成就吧😅,但不是一件好事啊😣

繼續閱讀

Kotlin簡潔的利器:local function

如果只是local變數就不值得一提了,但是在kotlin連函數都可以宣告在另一個函數的local範圍內,可以宣告local函數能帶來什麼好處呢?

繼續閱讀

Kotlin的this與類別標籤

在類別裡this表示當前類別的物件,因為它作用的範圍是在巢狀中最內層的區塊,所以如果是在內部類別或匿名類別裡,要怎麼存取到外部類別的物件,kotlin提供了方便的表示式,類別本身都會隱含一個同名的標籤,透過this加上這個標籤的方式就可以指定是代表哪個類別物件了

繼續閱讀

Kotlin類別的繼承

繼承(Inheritance)是物件導向中很重要的概念,我們可以為具有相似特性的子類別(derived class)共同繼承自一個父類別(base class),這樣不同的子類別都會有相同的特性(父類別的屬性和函數),又各自擁有自己的屬性和函數,可以達到差異化並減少重複撰寫相同的實作代碼

繼續閱讀

Kotlin的類別和物件

類別在物件導向就是用程式來模擬描述現實世界中實體的特性(屬性,property)和行為(函數,function),這些實體就是從類別衍生出來的物件,物件就會擁有這個類別的屬性和函數,藉由物件間的互動來完成程式的要求

class Person { /*...*/ }
// 如果沒有主體內容則可以省略大括號
class Empty

繼續閱讀

Kotlin類別的起源:Any

The root of the Kotlin class hierarchy. Every Kotlin class has Any as a superclass.

Any是kotlin所有不可為空類別(也就是沒有?)的父類別,相當於java的Object類別,如果要允許空值還有一個Any?,而且嚴格來說Any?才是所有類別的根類別,雖然Any和Any?並沒有繼承的關係

繼續閱讀

Kotlin如何避免NullPointerException

NullPointerException已經可以說是java開發者的日常😱,只要程式邏輯上任何一處沒有經過深思熟慮都可能引發NPE的異常,那我們來看看kotlin在這一點上如何擺脫我們的困擾而做到Null safety

繼續閱讀

Kotlin變數宣告的val和var

In Kotlin, everything is an object in the sense that we can call member functions and properties on any variable.

在Kotlin所有的變數都是物件,可以呼叫它的成員函數和屬性,宣告會用到兩個關鍵字是val和var

  • val:用在唯讀(read-only)變數,只能賦值一次,類似在java中加上final,建議優先使用
  • var:是可變(mutable)變數,值可以被修改,當需要重新給值的情況再改用var

繼續閱讀

使用Kotlin和Jetpack Compose開發了一個天氣App

Jetpack Compose是一套Android新的UI框架,在今年的7月28日推出了第一個穩定版本1.0,作為一個Android開發的新手,很榮幸能跟到這個從根本上改變開發UI方式的里程碑,UI layout不再是由一堆XML文件構成,取而代之的是用簡潔的程式碼就能宣告描述出UI的樣子,當UI的資料有變化,就會自動重建刷新顯示

繼續閱讀

Bundle a minimal JRE into an exe using Launch4j and Jlink

在Windows環境想要發布開發好的Java應用程序給別人使用,可以利用Launch4j轉換成exe檔方便執行,Launch4j會產生一個原生啟動程序,實際上還是依賴Java的執行環境來運行程式,另外一方面可以再透過Jlink生成自定義的JRE來縮小整體的體積,從JDK 9開始架構模組化了,不再提供默認的JRE,但還是能自己用提供的jlink工具程式來創建

繼續閱讀