Daily Digest

每日新聞摘要

2026年05月16日

今日總結

內容會跟隨語言切換。

📝 今日焦點:PdfKmp 1.0 以 KMP 在 Android/iOS 輸出原生 PDF,強調向量化、共用 DSL 與無第三方引擎;AppXpose 以靜態 APK 分析與簽章庫補強 Data Safety 可信度。 🔧 效能最佳化:liquid-glass 在多平台提供霧面模糊,並依裝置記憶體自動降級,低階機直接停用模糊以降低 OOM 風險;自訂 launcher 也用排序引擎提升常用 App 命中率。 🏗 架構設計:Android manifest 權限與 targetSdk 變更需定期盤點;HLD/LLD、Flow 的 zip/combine、離線 AR 導覽與 Kotlin 跨 iOS 開發都在強化系統與流程設計。 ✅ 測試與品質:QED 以 Kotlin DSL 重寫 UI/API 測試,追求可讀、可維護與穩定 CI;AppXpose 也透過完整性檢查與可擴充簽章庫提升偵測品質。

01

PdfKmp 1.0 — A Kotlin Multiplatform PDF Library for Android and iOS

Dev.to Kotlin 作者:Nurmuhammad 發布:05-16 10:33

PdfKmp 1.0:適用於 Android 與 iOS 的 Kotlin Multiplatform PDF 函式庫

你只需撰寫一次文件,就能同時發佈到兩個平台商店。

重點摘要

以 KMP 為核心,DSL、排版引擎與文件模型皆在 commonMain
採向量輸出與各平台原生 PDF 堆疊,兼顧清晰度與可搜尋性
1.0 穩定版,遵循 SemVer、Apache 2.0,且不依賴第三方 PDF 引擎

PdfKmp 1.0 是一套以 Kotlin Multiplatform 為核心的 PDF 函式庫,讓開發者只需撰寫一次文件,就能在 Android 與 iOS 以原生 PDF 堆疊輸出。其 DSL、排版引擎與文件模型都放在 commonMain,並提供頁面結構、富文字、表格、裝飾、頁首頁尾、超連結、字型、圖片、向量圖形與儲存等能力。PdfKmp 強調向量化輸出,除真實照片外皆不轉成點陣圖,因此檔案更小、縮放更銳利,也更容易搜尋與無障礙存取。專案已達 1.0 穩定版,採 SemVer、Apache 2.0 授權,且不使用第三方 PDF 引擎。

02

Frosted glass for Compose Multiplatform without OOMing on low-end Android

Dev.to Kotlin 作者:Nadeem Iqbal 發布:05-16 13:37

Compose Multiplatform 的霧面玻璃效果,且不會在低階 Android 上 OOM

這個小型 Compose Multiplatform 函式庫提供 iOS 26 風格的背景模糊,並能依裝置能力優雅降級。

重點摘要

為 Compose Multiplatform 提供可直接套用的霧面背景模糊效果
依平台與裝置能力自動選擇 Full、Medium、Fallback 三種品質層級
在低階 Android 以零配置的平坦色塊取代模糊,避免 OOM

liquid-glass 是一個小型 Compose Multiplatform 函式庫,可在 Android、iOS、Desktop 與 Web 上提供類似 iOS 26 的霧面背景模糊效果。它補足了 Compose 內建 Modifier.blur 只會模糊元件自身內容、而非背景的限制,並提供 Modifier.liquidGlass() 以及 GlassCard、GlassButton、GlassNavBar 等元件。作者強調的重點是優雅降級:系統會依平台與裝置自動選擇 Full、Medium、Fallback 三種品質層級,低階 Android 則直接關閉模糊並避免額外記憶體配置,以降低 OOM 風險。

03

How I Built a Static APK Analyzer That Detects Hidden Tracker SDKs in Android Apps, APK integrity checks, and what 3,745 real scans revealed.

Dev.to Kotlin 作者:Mahere Fluxera 發布:05-16 14:48

我如何打造靜態 APK 分析器,偵測 Android App 中的隱藏追蹤 SDK 與 APK 完整性問題

AppXpose 不是監看 App 的行為,而是直接讀取它內含了什麼。

重點摘要

透過比對 DEX 類別名稱前綴,靜態辨識內嵌的追蹤 SDK。
AppXpose 同時執行 5 項確定性的 APK 完整性檢查。
3,745 次掃描後,金融類 App 平均含 13.5 個追蹤 SDK,且 7 分之 1 的 App 為 HIGH 或 CRITICAL。

本文說明 AppXpose 如何回應 Google Play 的 Data Safety 標籤可信度不足問題。作者沒有採用只看流量的動態監測,而是以靜態 APK 分析讀取 DEX 類別名稱,透過前綴比對辨識 Firebase、AppsFlyer 等追蹤 SDK,並建立可持續擴充的簽章資料庫。系統也會檢查重打包、hook 框架、簽章異常與可疑原生檔案等完整性跡象。根據 3,745 次掃描結果,金融 App 的追蹤密度最高,未分類 SDK 也相當常見。作者認為靜態分析是務實起點,但仍受混淆與權限宣告落差限制。

04

We All Keep Ignoring these Android Manifest Permissions

Medium Kotlin 作者:Dev 175 發布:05-16 07:11

人人都在忽略的 Android Manifest 權限

這些權限會在你每次提升 targetSdk 時悄悄弄壞 App,從 Android 13 之後一直如此,而 Android 16 又新增了更多需要注意的項目。

重點摘要

提升 targetSdk 可能導致權限相關問題浮現。
Android 13 之後的變更會讓舊設定失效。
Android 16 又新增了需留意的權限。

本文提醒開發者,Android manifest 中有些權限常被忽略,卻可能在每次提升 targetSdk 時悄悄造成 App 故障,尤其是從 Android 13 之後更容易出現相關問題。文章也指出,Android 16 又新增了部分權限清單,若專案沒有定期檢視 manifest 設定,風險會持續增加。核心重點是,權限配置不能依賴舊有假設,必須主動盤點與更新。

05

Android’de Kotlin Flow: Zip ve Combine Operatörlerinin Gerçek Kullanımı

Medium Kotlin 作者:deniz baş 發布:05-16 08:00

Android 中的 Kotlin Flow:Zip 與 Combine 運算子的實際用法

Android 應用程式經常需要管理多個非同步 API 請求。

重點摘要

多個非同步 API 請求是 Android 開發中的常見需求。
避免阻塞 UI thread 是實作上的關鍵。
文章聚焦於 Flow 的 zip 與 combine 在實務中的應用。

這篇文章從 Android 開發常見情境出發,說明在應用程式中如何處理多個非同步 API 請求,同時避免阻塞 UI thread。根據標題與開頭內容,重點放在 Kotlin Flow 的 zip 與 combine 運算子在實際專案中的用法,協助開發者協調多個資料流,整合不同來源的結果。雖然目前只看到簡短摘錄,但可以確定主題是以 Flow 提升 Android 非同步處理的可讀性與實務效率。

06

Basic DataTypes in Kotlin

Medium Kotlin 作者:Rajesh Kumar 發布:05-16 09:24

Kotlin 的基本資料型別

在 Kotlin 中,每個變數與資料結構都有其型別。

重點摘要

Kotlin 為每個變數與資料結構指定型別。
理解基本資料型別是學習 Kotlin 的基礎。
本文以概述方式帶出主題。

Kotlin 中每個變數與資料結構都有對應的型別,這也是語言設計的重要特徵。本文內容極為精簡,主要點出 Kotlin 基本資料型別的概念,作為進一步學習的入口。依據現有文字判斷,這篇文章偏向主題導覽,而非深入的技術說明。

07

Day 3: How Kotlin Coroutines Work Internally (Especially suspend Functions)

Medium Kotlin 作者:Kamaldeep Kakkar 發布:05-16 09:47

第 3 天:Kotlin 協程的內部運作方式(尤其是 suspend 函式)

從高層來看,Kotlin 協程是由 Kotlin 編譯器與執行階段管理的輕量級狀態機。

重點摘要

Kotlin 協程本質上是輕量級狀態機。
其行為由 Kotlin 編譯器與執行階段共同管理。
文章重點放在 suspend 函式與內部機制。

本文以高層角度介紹 Kotlin 協程,指出它們本質上是由 Kotlin 編譯器與執行階段管理的輕量級狀態機。內容聚焦於協程的內部運作方式,並特別提到 suspend 函式。由於原文摘錄較短,僅提供這項核心觀點,並引導讀者前往完整文章繼續閱讀。

08

Building an Offline AR Heritage Guide with ARCore, Kotlin, and AI | Samsung PRISM Finalist

Medium Kotlin 作者:Atharva Mendhulkar 發布:05-16 11:06

使用 ARCore、Kotlin 與 AI 建構離線 AR 文化遺產導覽

我們如何運用 ARCore、Kotlin、感測器融合與自適應 AI 語音互動,打造一套離線優先的擴增實境文化遺產導覽。

重點摘要

離線優先的擴增實境文化遺產導覽
結合 ARCore、Kotlin 與感測器融合
加入自適應 AI 語音互動

本文介紹一個離線優先的擴增實境文化遺產導覽系統,結合 ARCore、Kotlin、感測器融合與自適應 AI 語音互動。專案重點在於即使沒有持續網路,也能提供可用的 AR 體驗,適合在實地參觀文化遺產時使用。作為 Samsung PRISM 決賽入圍作品,文章呈現了如何把空間追蹤、行動開發與 AI 互動整合起來,以更直覺的方式傳遞文化資訊。

09

PdfKmp 1.0 — A Kotlin Multiplatform PDF Library for Android and iOS

Medium Kotlin 作者:Conamobileme 發布:05-16 11:29

PdfKmp 1.0——適用於 Android 與 iOS 的 Kotlin Multiplatform PDF 函式庫

PdfKmp 是一個 Kotlin Multiplatform 函式庫,可透過單一共享程式碼基底在 Android 與 iOS 上產生 PDF 文件。

重點摘要

以共享的 Kotlin 程式碼產生 PDF
同時支援 Android 與 iOS
文章提到版本 1.0.1

PdfKmp 被介紹為一個 Kotlin Multiplatform 函式庫,讓開發者能以單一共享程式碼基底,在 Android 與 iOS 上產生 PDF 文件。文章重點在於其跨平台特性,並提到版本 1.0.1。由於原文摘錄相當精簡,內容主要是在簡介這個工具及其用途,未提供更深入的實作細節。

10

WorkManager on Modern Android: Architectural Standards and Best Practices

Medium Kotlin 作者:Enes Selçuk 發布:05-16 11:53

現代 Android 上的 WorkManager:架構標準與最佳實務

土耳其語讀者請前往此連結。

重點摘要

提供的內文未包含文章正文。
內容僅提示土耳其語版本可透過另一連結閱讀。
摘錄中沒有 WorkManager 的技術細節或實作建議。

所提供的文字並未包含文章正文,只看到標題與一則提示土耳其語讀者前往其他 Medium 連結的訊息。因此,摘錄中沒有關於 WorkManager、Android 架構、標準或最佳實務的具體內容可供忠實摘要,只能確認原文在此處未完整提供。

11

Navigating Android System Design: The Ultimate Guide to HLD vs. LLD

Medium Kotlin 作者:Android Expert 發布:05-16 14:24

導航 Android 系統設計:HLD 與 LLD 的終極指南

如何在宏觀架構藍圖與微觀 Kotlin 實作之間取得平衡,以打造可擴充、可上線的應用程式。

重點摘要

說明 Android 中高階設計與低階設計的差異。
聚焦於架構規劃與 Kotlin 實作細節的平衡。
目標是協助打造可擴充、可投入生產的 Android 應用。

本文以 Android 系統設計為主題,說明高階設計(HLD)與低階設計(LLD)如何相互配合。文章強調,開發者必須把宏觀的架構藍圖與微觀的 Kotlin 實作選擇連結起來,才能建立可擴充且適合正式上線的應用程式。整體內容可視為一份協助理解穩健 Android 系統設計方法的指南。

12

It’s the time for build iOS apps with Kotlin

Medium Kotlin 作者:Venkataram k 發布:05-16 14:43

現在是用 Kotlin 開發 iOS 應用程式的時候了

對於已具備 Kotlin 經驗的 Android 開發者來說,現在有機會為兩個平台撰寫應用程式。

重點摘要

Kotlin 開發者可將技能延伸到 iOS 開發。
原本以 Android 為主的經驗可擴展到多平台。
文章強調跨平台開發帶來的新機會。

本文指出,已經熟悉 Kotlin 的 Android 開發者,如今有機會把能力延伸到 iOS 應用程式開發。作者認為,過去只寫 Android App 的經驗,現在可以運用在同時面向兩個平台的開發上。文章核心在於提醒開發者,Kotlin 為跨平台移動開發打開了新的可能性。

13

I built a Kotlin DSL test automation framework because existing ones kept failing their own standards

Dev.to Kotlin 作者:anevisser 發布:05-15 23:23

我打造了一個 Kotlin DSL 測試自動化框架,因為現有框架總是連自己的標準都達不到

許多測試自動化框架並沒有達到它們本應遵守的工程標準。

重點摘要

QED 是開源的 Kotlin DSL,適用於 UI 與 API 測試,並以 SOLID 原則從零打造。
它解決了脆弱的頁面物件、散亂的膠水程式碼,以及難以維護的 CI 管線。
QED 已在 DairyMax 的 GitHub Actions 流程中實際使用,API 與 UI 測試分開執行。

作者指出,許多測試自動化框架在速度、穩定性與可維護性上都未達標,甚至連自身宣稱的品質標準都做不到,因此決定自行打造 QED。QED 是一個開源、MIT 授權的 Kotlin DSL 框架,可用於 UI 與 API 測試,並以 SOLID 原則設計,讓測試更像在表達意圖。它以可組合的畫面區塊取代脆弱的頁面物件,將測試邏輯集中在 DSL 中,也提供結構清楚的 GitHub Actions CI 流程。此框架已用於作者正在開發的 DairyMax,並在每次推送時執行。

14

Day 4: Data Types — Teaching Your Program the Difference Between a Number and a Name

Medium Kotlin 作者:Kirubakaran 發布:05-16 03:46

第 4 天:資料型別——教你的程式分辨數字與名稱的差別

Android with Kotlin for Absolute Beginners——系列第 4 天

重點摘要

介紹 Kotlin 中的資料型別主題
屬於 Android Kotlin 初學者系列的一部分
目前可見摘錄未提供更多內文細節

這篇文章看起來是《Android with Kotlin for Absolute Beginners》系列的第 4 天,主題聚焦在資料型別。根據提供的文字,內容重點在於讓程式能分辨像數字與名稱這類不同值。由於摘錄只有標題與系列標示,沒有更多實質段落,因此可確認的資訊僅限於系列脈絡與本回課程主題。

15

I Got Tired of My Launcher Being Dumb. So I Replaced It.

Medium Kotlin 作者:Gayathri Kolli 發布:05-16 05:17

我受夠了我的啟動器太笨,所以我把它換掉了

我做了一個帶有自訂排名引擎的主畫面替代方案。

重點摘要

以自製主畫面取代預設啟動器。
建立排名引擎,讓應用程式推薦更聰明。
結合近期衰減、使用頻率與時段偏好。

作者表示自己受夠了原本「很笨」的啟動器,因此動手打造一個自訂的主畫面替代方案。這套系統內建排名引擎,透過近期使用衰減、使用頻率與一天中的時段偏好等訊號,讓應用程式排序更貼近使用情境。文章重點在於以個人專案改善日常手機操作,讓常用 App 更容易被找到。