分類: Android

  • 16KB Memory page size

    記錄一下。

    所有提交至 Google Play 且目標為 Android 15 或更高版本的應用程式在2025年11月1日後必須支援 16KB 記憶體分頁大小,大部份的情況應該是不用做什麼調整才對,但有可能發生使用到的 library so 檔沒有做這個調整。

    這件事 Google Play Console 就有得看,進到 Test and release 分類中的 Latest release and bundles,下方 Latest app bundles 選到最新的版本,進入查看詳請,在最下方就有 Memory page size。

    點開 Show detail 就會提示有哪些檔案不符合要求。

  • Flutter 跳兩個版

    最近在升級專案使用的 flutter 到 3.27,也升級了AGP,遇到各種問題。

    先是有套件是沒有在 gradle 放 namespace,丟了 PR 也不理,只好自己 fork。

    然後不知道為什麼,沒放 jvmTarget 的套件也會有相容性問題,就隨便給他指定一個低的。

    allprojects {
        tasks.withType(KotlinCompile).configureEach {
            kotlinOptions {
                if (jvmTarget == null) {
                    jvmTarget = JavaVersion.VERSION_1_8.toString()
                }
            }
        }
    }

    然後其他的事讓 toolchain 處理。

    java {
        toolchain {
            languageVersion = JavaLanguageVersion.of(21)
        }
    }

    然後怪事就來了,flutter_statusbarcolor_ns 這個套件不知道為什麼,toolchain 指定 21 的時候會跟你說沒辦法跟 17 相容,指定 17 的時候又會跳 class file has wrong version 65.0, should be 61.0,後來實在搞不定,最後只好在 gradle.properties 加個設定忽略這個檢查。

    kotlin.jvm.target.validation.mode = IGNORE

    有空再研究為什麼。

  • Android Studio 更新後不認得 VM Options 的舊設定

    更新 IDE 後發生了一個慘劇。

    從錯誤訊息上看的出來,因為我在前一版開了 ZGC,但新的 IDE 不認得這個選項了。

    如果照著他說的,重新安裝 IDE,什麼都不會改變,因為它的設定檔還是在那邊。

    這時候到 %AppData%\Roaming\Google\ 找到這個版本的資料夾,用文字編輯器打開 studio64.exe.vmoptions 這個檔案,把有問題的設定砍掉就解決了。

  • transitions

    一年多沒發文了,這主機現在感覺只跑機器人而已。

    前幾天發現 Android 弄個動畫效果真簡單,但 Android Nougat 有奇怪的 Bug ,閃來閃去真的煩。

    可以的話就更新到 Oreo 吧!雖然我個人是正在等 XZP 的 Pie 就是了。

  • Nougat 區域語系忽略預設值

    前陣子把 Healing Plurk 裡的 HTML 全部砍掉,用原生 JAVA 取代的時候,順便把語系字串也整理了一次。當時檔案把我習慣的繁體中文台灣正體作為 zh 的預設,另外加上中國簡體zh-rCN、少部份的香港繁體翻譯zh-rHK,所以中文一共有這三個檔。

    然後就爆炸了。

    這樣的設法在 Android 7.0 的全新手機語系管理有 BUG ,在找不到地區的中文字串檔的時候,會忽略 values-zh 下的檔案,直接套用不帶語言的 values 下的檔案。雖然有許多高手提供了不同的程式碼來解決,但實驗過後還不如把 values-zh 的東西複製出來丟到 values-zh-rTW 下面,免得生出奇怪情況的BUG。

  • 召喚機器狼更新

    之前在 Healing Plurk 第4版更新大多工作完成的時候,抽空去改了一下召喚機器狼。

    然而並沒有什麼卯月,因為沒人用。

    本來是依照官方的分享連結作法來做這個 APP 的,但官方一直不支援他們家自己訂出來的東西,造成原來的版本點官方 APP 是一點用都沒有。明明都答應過會做,還都過了一年了。

    總之改了做法,變成分享文字到 APP 上,不要管官方的分享連結了。

  • Runtime Permissions

    在 Android 6.0 裡,新增了一個東西,基本上就是在使用者需要的時候再問使用者要不要提供權限。

    官方提供的教學裡,除了要在 AndroidManifest.xml 定義你需要的權限以外,你需要呼叫 checkSelfPermission 來確定權限是不是有開放,若沒有,使用 requestPermissions,告訴系統你需要要求的權限,接著 Override onRequestPermissionsResult,處理使用者允許或拒絕給予權限之後的動作。

    然而我後來實在很懶,所以寫了一個 class 繼承 AppCompatActivity,主要幫我產生一個 requestCode,再讓 callback 跟請求權限寫在同樣的地方。畢竟我很討厭捲來捲去的。

    Edit:後來的後來,又寫了一個 RequestPermissionsUtil 取代之前的 class。