📝 Today’s highlight
Kotlin Weekly #530 covers companion blocks, the 2026 state report, the Agentic Gradle Plugin, and tool updates, while also marking Hadi Hariri’s departure from JetBrains.
🔧 Performance
Slow Android Gradle builds, DataStore migration, and offline inventory tracking all stress the same rule: measure first, then change.
🏗 Architecture
Banking app obfuscation with R8, string encryption, and Frida detection only raises reverse-engineering cost; Muffle uses GeofencingClient and a foreground service for reliability.
✅ Quality
adb install -r may leave the app running, so screenshots can mislead; cloud storage choices should be checked for backup, security, and cost.
01
Kotlin Weekly #530
Kotlin Weekly作者:發布:10-04 11:45
Kotlin Weekly #530
Hello Kotliners! This week we want to say goodbye to Hadi Hariri, who has moved on from JetBrains after nearly seventeen years.
重點摘要
JetBrains bids farewell to Hadi Hariri after nearly 17 years.
Newsletter covers Kotlin news, articles, videos, libraries, and sponsored links.
Topics include experimental Kotlin features, Kotlin Multiplatform, Compose, and coroutines.
展開詳細摘要
Kotlin Weekly #530 rounds up a wide set of items for Kotlin developers, opening with a farewell to Hadi Hariri after nearly seventeen years at JetBrains. The issue links to news on experimental companion blocks and extensions, the State of Kotlin in 2026 report, and a new Agentic Gradle Plugin. It also highlights an article on why “30 characters max” is usually the wrong way to think about length, plus videos on name-based destructuring, Kotlin/Wasm AI apps, and Swift Export. The issue closes with library updates spanning Compose Multiplatform, compiler plugins, and tooling around bundletool.
Kotlin Weekly #530
Hello Kotliners!本周我们要向 Hadi Hariri 说再见,他在 JetBrains 工作近十七年后即将开启新旅程。
Cloud Storage for Photographers: The Complete Guide
Medium Kotlin作者:Aelxried發布:10-04 07:45
Cloud Storage for Photographers: The Complete Guide
Cloud storage for photographers can protect your photos from drive failure, theft and ransomware.
重點摘要
Protect photos from drive failure, theft, and ransomware
Compare backup features, security, and costs
Continue reading on Medium
展開詳細摘要
This article introduces cloud storage as a way for photographers to protect their work against drive failure, theft, and ransomware. It frames the topic as a practical guide to evaluating cloud storage options, with attention to backup features, security, and cost. The excerpt does not provide product recommendations or performance claims, but signals that the full piece compares key considerations photographers should review before choosing a storage solution.
R8, String Encryption, and Frida Detection: Raising the Cost of Reverse Engineering
Medium Kotlin作者:Alim Reshitov發布:10-04 08:56
R8, String Encryption, and Frida Detection: Raising the Cost of Reverse Engineering
An honest look at what obfuscation actually buys a banking app — and what it doesn’t
重點摘要
Focuses on obfuscation techniques for a banking app
Examines R8, string encryption, and Frida detection
Questions the real limits of what obfuscation can deliver
展開詳細摘要
This article takes an honest look at how much obfuscation can really help a banking app. It centers on techniques such as R8, string encryption, and Frida detection, framing them as ways to increase the cost of reverse engineering rather than to provide absolute protection. The piece also emphasizes that obfuscation has clear limits: it may slow attackers down, but it does not eliminate the underlying security risks or guarantee that an app cannot be analyzed.
Why Your Android Gradle Build Is Slow — and How to Diagnose It
Medium Kotlin作者:kshitiz agnihotri發布:10-04 09:08
Why Android Gradle Builds Are Slow — and How to Diagnose It
A five-minute build can turn a tiny edit into a long interruption.
重點摘要
Slow builds interrupt small edits.
Multi-module Android apps are often involved.
The article focuses on diagnosis, not a quick fix.
展開詳細摘要
A five-minute Android Gradle build can turn even a tiny edit into a long interruption. The article points to the common pain of slow builds in multi-module Android apps and frames the problem as one that should be diagnosed rather than solved with a simplistic Gradle tweak. From the excerpt alone, the main takeaway is that build slowness is a practical workflow issue that deserves investigation into its causes before attempting changes.
adb install -r doesn’t kill your app, so your screenshot is a lie
Medium Kotlin作者:Rajan Maurya發布:10-04 09:27
adb install -r doesn’t kill your app, so your screenshot is a lie
Continue reading on MobileByteSensei »
重點摘要
The article is only a teaser and points readers to the full post.
The title warns that adb install -r may not restart the app.
A screenshot can be misleading if the app process keeps running.
展開詳細摘要
This entry is only a short teaser that redirects readers to the full article on MobileByteSensei. From the title alone, it highlights an Android debugging pitfall: using adb install -r does not necessarily kill the running app, so any screenshot or observed state may be misleading if the process remains alive. No further technical details are provided in the excerpt.
Moving Local Storage to Jetpack DataStore Without Paying a Cent in Performance
Medium Kotlin作者:Taufik Amaryansyah發布:10-04 10:51
Moving Local Storage to Jetpack DataStore Without Paying a Cent in Performance
How we replaced the storage foundation of a large-scale app, then proved it with numbers.
重點摘要
Migrated a large-scale app's local storage foundation to Jetpack DataStore
Validated the change with measured results rather than assumptions
Focused on preserving performance during the storage transition
展開詳細摘要
The article describes how a large-scale Android app replaced its local storage foundation with Jetpack DataStore and then verified the outcome with numbers. It emphasizes the migration process and the importance of measuring results instead of relying on assumptions. The piece centers on maintaining performance while changing the storage layer, but the provided excerpt does not include detailed implementation steps or metrics.
Dart vs Kotlin: Mana yang lebih baik di tahun 2026?
Medium Kotlin作者:hutasoitandrew發布:10-04 13:31
Dart vs Kotlin: Which Is Better in 2026?
If you are a programmer exploring application development, two language names...
重點摘要
Compares Dart and Kotlin for app development.
Frames the discussion around the year 2026.
The provided excerpt does not include the full article’s conclusions.
展開詳細摘要
The article is introduced as a comparison between Dart and Kotlin for programmers exploring application development, with the title asking which language is better in 2026. However, the provided content is only a short Medium preview line and does not include the article’s actual analysis, recommendations, or conclusions. Based on the excerpt alone, it only establishes the topic and framing of the comparison, not any factual claims about either language’s capabilities or relative merits.
Dart 与 Kotlin:2026 年谁更好?
如果你是一名正在探索应用程序开发世界的程序员,会遇到两个编程语言名称……
重點摘要
比较 Dart 与 Kotlin 在应用开发中的定位。
标题以 2026 年作为比较时间点。
当前提供的片段未包含完整文章的结论。
展開詳細摘要
这篇文章以 Dart 与 Kotlin 的对比为主题,标题直接提出“2026 年谁更好”的问题,面向正在探索应用开发的程序员。不过,现有内容只有 Medium 的简短预览片段,没有提供完整分析、建议或结论。因此,依据这段文字只能确认文章主题和比较框架,无法推断两种语言的能力差异或优劣判断。
Dart 與 Kotlin:2026 年誰更好?
如果你是一位正在探索應用程式開發世界的程式設計師,會遇到兩個程式語言名稱……
重點摘要
比較 Dart 與 Kotlin 在應用程式開發中的定位。
標題以 2026 年為比較時點。
目前提供的片段未包含完整文章的結論。
展開詳細摘要
這篇文章以 Dart 與 Kotlin 的比較為主題,標題直接提出「2026 年誰更好」的問題,目標讀者是正在探索應用程式開發的程式設計師。不過,現有內容只有 Medium 的簡短預覽片段,沒有提供完整分析、建議或結論。因此,依照這段文字只能確認文章主題與比較框架,無法推論兩種語言的能力差異或優劣判斷。
Building AI Agents with Kotlin ADK: A Comprehensive Guide
Dev.to Kotlin作者:Hazrat Ummar Shaikh發布:10-03 20:24
Building AI Agents with Kotlin ADK: A Comprehensive Guide
The Kotlin Agent Development Kit (ADK) provides essential tools and abstractions that streamline the creation of intelligent systems, allowing developers to focus on agent behavior rather than underlying complexities.
重點摘要
Kotlin ADK simplifies agent development with abstractions for lifecycle, state, and LLM integration.
Coroutines enable concurrent, non-blocking operations for responsive AI agents.
The article shows both stateless and stateful agents, plus testing and deployment guidance.
展開詳細摘要
This guide explains how Kotlin ADK helps developers build AI agents by abstracting lifecycle, communication, state management, and LLM interaction. It first defines what an AI agent is, then walks through project setup, a simple stateless GreeterAgent, and a stateful content summarizer that stores summaries through tool methods. The article also highlights Kotlin coroutines for concurrent requests, discusses testing and debugging strategies, and outlines deployment options such as JVM servers, Docker, serverless functions, and edge devices. It closes by comparing Kotlin ADK with other agent frameworks and emphasizing Kotlin’s fit for production AI applications.
使用 Kotlin ADK 构建 AI Agent:完整指南
Kotlin Agent Development Kit(ADK)提供必要的工具与抽象层,让开发者能专注于 agent 行为,而不是底层复杂性。
重點摘要
Kotlin ADK 通过生命周期、状态和 LLM 集成的抽象,简化 agent 开发。
Kotlin 协程可让 AI agent 以非阻塞方式并发处理任务,保持响应性。
文章涵盖无状态与有状态 agent、测试调试,以及部署选项。
展開詳細摘要
本文介绍 Kotlin ADK 如何通过抽象生命周期、通信、状态管理和 LLM 交互,帮助开发者构建 AI Agent。文章先解释 AI agent 的概念,再逐步说明项目初始化、一个简单的无状态 GreeterAgent,以及一个可通过工具方法保存摘要的有状态内容摘要器。文中还强调 Kotlin 协程适合处理并发请求,并整理了测试、调试与部署方案,包括 JVM 服务器、Docker、无服务器函数和边缘设备。最后,作者比较了 Kotlin ADK 与其他框架,并指出 Kotlin 在生产级 AI 应用中的适配性。
使用 Kotlin ADK 建構 AI Agent:完整指南
Kotlin Agent Development Kit(ADK)提供必要的工具與抽象層,讓開發者能專注於 agent 行為,而非底層複雜度。
重點摘要
Kotlin ADK 透過生命週期、狀態與 LLM 整合的抽象,簡化 agent 開發。
Kotlin 協程可讓 AI agent 以非阻塞方式並行處理工作,維持回應性。
文章涵蓋無狀態與有狀態 agent、測試除錯,以及部署選項。
展開詳細摘要
本文說明 Kotlin ADK 如何透過抽象化生命週期、通訊、狀態管理與 LLM 互動,協助開發者打造 AI Agent。內容先介紹 AI agent 的基本概念,再帶讀者完成專案初始化、簡單的無狀態 GreeterAgent,以及可透過工具方法儲存摘要的有狀態內容摘要器。文章也提到 Kotlin 協程適合處理並行請求,並整理測試、除錯與部署方式,包括 JVM 伺服器、Docker、無伺服器函式與邊緣裝置。最後比較 Kotlin ADK 與其他框架,說明 Kotlin 在生產環境 AI 應用中的優勢。
Architecting a Low-Power Geofencing Engine: Lessons from the Android Location API
Dev.to Kotlin作者:Haseeb發布:10-04 02:46
Architecting a Low-Power Geofencing Engine: Lessons from the Android Location API
Use system geofencing to detect boundary crossings without keeping GPS active all the time.
重點摘要
GeofencingClient offloads monitoring to Google Play Services instead of polling location in-app.
PendingIntent and BroadcastReceiver let the app stay dormant until an entry or exit event occurs.
BroadcastReceiver reliability and GPS drift can force larger radii, foreground services, or hybrid verification.
展開詳細摘要
This article describes how the author built Muffle, an Android app that changes sound profiles based on location without draining the battery. Instead of polling GPS in a background loop, the implementation uses Google Play Services’ GeofencingClient with Geofence objects, a GeofencingRequest, and PendingIntent-triggered callbacks. That architecture keeps the app asleep until a boundary crossing occurs. The author also explains practical limits: indoor GPS is imprecise, requiring larger geofence radii, and Android 12+ background restrictions plus battery optimization can make receivers unreliable. To improve robustness, the author ended up using a foreground service and suggests a hybrid approach with cell tower checks. The main takeaway is to rely on system APIs, design for process death, and keep automation simple, invisible, and battery-conscious.
Why Offline-First Inventory Apps Are Harder Than They Look
Medium Kotlin作者:Taufik Fredi Pratama發布:10-04 00:00
Why Offline-First Inventory Apps Are Harder Than They Look
A quantity looked simple until transfers and physical counts started overlapping.
重點摘要
Local-first inventory logic gets complicated when operations overlap.
Transfers and physical counts can make quantities harder to reason about.
The article shares notes from building an Android inventory app for offline use.
展開詳細摘要
The article argues that offline-first inventory apps are more complicated than they initially appear. What seems like a simple quantity becomes harder to manage once transfers and physical counts overlap, especially in a local-first Android app. The piece frames these challenges as notes from building such an inventory system, highlighting how offline behavior can complicate inventory tracking even when the core idea looks straightforward.