# apk

Published articles for apk.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Building a Really, Really Small Android App

DevFeed: [Building a Really, Really Small Android App](<https://devfeed.tech/articles/building-a-really-really-small-android-app-27364.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/a-really-small-app.htm>)

Author: Khan Academy

Published: 2016-08-22T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [App](<https://devfeed.tech/topics/app.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app](<https://devfeed.tech/tags/app.md>), [app-size](<https://devfeed.tech/tags/app-size.md>), [build](<https://devfeed.tech/tags/build.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>)

### AI overview

This article describes building a minimally viable Khan Academy Android app focused on video playback. The resulting APK was 26 kilobytes to download, supported older Android versions, and offered limited offline navigation.

### Source excerpt

By Charlie Marsh App size is important to us. As a team striving to deliver a free, world-class ... Read more

## I Had Never Built A VR App - 8 Days Later, Mine Was On The Quest Store

DevFeed: [I Had Never Built A VR App - 8 Days Later, Mine Was On The Quest Store](<https://devfeed.tech/articles/i-had-never-built-a-vr-app-8-days-later-mine-was-on-the-quest-store-17470.md>)

Original publisher: [Read original article](<https://www.uploadvr.com/i-had-never-built-a-vr-app-8-days-later-mine-was-on-the-quest-store/>)

Author: Craig Storm

Published: 2026-09-14T15:12:36Z

Content type: article

Language: en

Sources: [UploadVR](<https://devfeed.tech/sources/uploadvr.md>)

Topics: [ai-coding](<https://devfeed.tech/topics/ai-coding.md>), [codex](<https://devfeed.tech/topics/codex.md>), [ChatGPT](<https://devfeed.tech/topics/chatgpt.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>), [Meta](<https://devfeed.tech/topics/meta.md>), [APK](<https://devfeed.tech/topics/apk.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app](<https://devfeed.tech/tags/app.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [code](<https://devfeed.tech/tags/code.md>), [codex](<https://devfeed.tech/tags/codex.md>), [coding](<https://devfeed.tech/tags/coding.md>), [meta](<https://devfeed.tech/tags/meta.md>), [openxr](<https://devfeed.tech/tags/openxr.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

The article describes an eight-day attempt to build and publish Punchable Face, a simple VR game for Meta Quest, despite having little prior development experience. Using Unity, OpenXR, Meta XR SDK components, ChatGPT, and Codex, the project progressed from an empty Unity project through coding, headset testing, store asset creation, submission, and approval on the Meta Quest Store.

### Source excerpt

Until a little over a week ago, Craig Storm had never built a VR app. Eight days later, his AI-assisted Quest game Punchable Face was live on Meta's store.

## Watch Follow-Through: Complications, Tiles, and a Companion Wear APK

DevFeed: [Watch Follow-Through: Complications, Tiles, and a Companion Wear APK](<https://devfeed.tech/articles/watch-follow-through-complications-tiles-and-a-companion-wear-apk-19667.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/watch-complications-wear-companion/>)

Author: Shai Almog

Published: 2026-08-31T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [watchOS](<https://devfeed.tech/topics/watchos.md>), [Android](<https://devfeed.tech/topics/android.md>), [APK](<https://devfeed.tech/topics/apk.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [release](<https://devfeed.tech/tags/release.md>), [watchos](<https://devfeed.tech/tags/watchos.md>)

### AI overview

Codename One now generates watchOS WidgetKit complications, Wear OS complication data sources and Tiles, and a companion Wear APK alongside the phone artifact. The article also explains platform-specific rendering limits and simulator behavior.

### Source excerpt

Codename One now generates watchOS WidgetKit complications, Wear OS complication data sources and Tiles, and a companion Wear APK beside the phone artifact.

## Security Week 2635: вредоносное ПО в автомобильных Android-устройствах

DevFeed: [Security Week 2635: вредоносное ПО в автомобильных Android-устройствах](<https://devfeed.tech/articles/security-week-2635-android-23090.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/kaspersky/articles/1073832/>)

Author: Kaspersky\_Lab ("Лаборатория Касперского")

Published: 2026-08-25T08:00:25Z

Content type: news

Language: ru

Sources: ["Лаборатория Касперского" RU](<https://devfeed.tech/sources/ru-2.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Android](<https://devfeed.tech/topics/android.md>), [APK](<https://devfeed.tech/topics/apk.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [WebView](<https://devfeed.tech/topics/webview.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [badbox](<https://devfeed.tech/tags/badbox.md>), [http](<https://devfeed.tech/tags/http.md>), [security](<https://devfeed.tech/tags/security.md>), [tag-9fe8963de219](<https://devfeed.tech/tags/tag-9fe8963de219.md>), [webview](<https://devfeed.tech/tags/webview.md>)

### AI overview

Kaspersky researchers discovered Android malware installed on DoFun automotive head units. The JarService dropper downloads a clicker for advertising banners and a reverse-proxy module, linking the campaign to attacks on Android TV set-top boxes and the BADBOX platform.

### Source excerpt

Исследователи "Лаборатории Касперского" обнаружили новый Android-зловред, уникальной особенностью которого является установка на головное устройство автомобиля. Вредоносное ПО использовало особенности головных устройств производителя DoFun, позволявшие устанавливать произвольные APK-файлы. Целью распространения вредоносного ПО являлось мошенничество с рекламными баннерами и использование автомобильной магнитолы в качестве прокси-сервера. Исследование кода выявило связи с другими атаками, нацеленными, например, на телеприставки под управлением Android. Расследование началось в июне 2026 года, когда специалисты "Лаборатории Касперского" обнаружили новый дроппер JarService. Зловред устанавливался как обычное пользовательское приложение и никак не маскировался под легитимное ПО. Точнее, у него полностью отсутствовал интерфейс, что указывало на возможность установки без ведома пользователя. Дроппер расшифровывает данные и запускает следующий этап атаки -- вредоносный загрузчик. Он, в свою очередь, отправляет информацию на командный сервер злоумышленников, скачивает оттуда и запускает финальную полезную нагрузку -- кликер на рекламные баннеры и реверс-прокси. Читать далее

## Watch Apps: One Codebase, Two Real Applications

DevFeed: [Watch Apps: One Codebase, Two Real Applications](<https://devfeed.tech/articles/watch-apps-one-codebase-two-real-applications-19666.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/watch-apps-phone-channel/>)

Author: Shai Almog

Published: 2026-08-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Android](<https://devfeed.tech/topics/android.md>), [media3](<https://devfeed.tech/topics/media3.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [apk](<https://devfeed.tech/tags/apk.md>), [apple](<https://devfeed.tech/tags/apple.md>), [apple-watch](<https://devfeed.tech/tags/apple-watch.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [files](<https://devfeed.tech/tags/files.md>), [release](<https://devfeed.tech/tags/release.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [state](<https://devfeed.tech/tags/state.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [watchos](<https://devfeed.tech/tags/watchos.md>)

### AI overview

Codename One can build Apple Watch companion applications and Wear OS applications from a shared watch entry point. The article explains separate application runtimes and storage, platform-specific rendering, and asynchronous communication for live messages, replicated state, and file transfers.

### Source excerpt

Codename One now builds Apple Watch companions and standalone Wear OS products from one watch entry point, with a portable asynchronous API for messages, state, and files.

## Android Studio Quail 4 Canary 3 now available

DevFeed: [Android Studio Quail 4 Canary 3 now available](<https://devfeed.tech/articles/android-studio-quail-4-canary-3-now-available-26329.md>)

Original publisher: [Read original article](<https://androidstudio.googleblog.com/2026/07/android-studio-quail-4-canary-3-now.html>)

Author: Android Studio Releaser (noreply@blogger.com)

Published: 2026-07-30T14:02:44Z

Content type: release

Language: en

Sources: [Android Studio Release Updates](<https://devfeed.tech/sources/android-studio-release-updates.md>)

Topics: [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [APK](<https://devfeed.tech/topics/apk.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apk](<https://devfeed.tech/tags/apk.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

Android Studio Quail 4 Canary 3 is available in the Canary channel. The release includes general fixes in Android Studio and Android Gradle Plugin 9.4.0-alpha07, including fixes related to APK parsing and SQLite database inspection.

### Source excerpt

Android Studio Quail 4 Canary 3 is now available in the Canary channel. If you already have an Android Studio build on the Canary channel, you can get the update by clicking Help > Check for Updates (or Android Studio > Check for Updates on macOS). Otherwise, you can download it here. For information on new features and changes in Android Studio Quail 4, see the Android Studio Preview release notes. For details of bugs fixed in each previous release of Android Studio Quail 4, see closed issues. General fixes and features Below is a list of general fixes in Android Studio Quail 4 Canary 3 and Android Gradle Plugin 9.4.0-alpha07. These are a result of your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. You can also vote for an existing issue to indicate that it also affects you. Fixed Issues APK Viewer Issue #534815916 Bug: IDE fails to parse its own APK, to reach the content of the manifest file Database Inspector Issue #530704637 Launching database inspector segfaults in SQLite

## Apple TV And Android TV: One Codebase, And CSS @media For The Living Room

DevFeed: [Apple TV And Android TV: One Codebase, And CSS @media For The Living Room](<https://devfeed.tech/articles/apple-tv-and-android-tv-one-codebase-and-css-media-for-the-living-room-19199.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/apple-tv-and-android-tv/>)

Author: Shai Almog

Published: 2026-06-30T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [tvOS](<https://devfeed.tech/topics/tvos.md>), [Android](<https://devfeed.tech/topics/android.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Android APK](<https://devfeed.tech/topics/android-apk.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [apple](<https://devfeed.tech/tags/apple.md>), [css](<https://devfeed.tech/tags/css.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article describes Codename One support for Apple TV and Android TV from a shared codebase. It covers runtime TV detection, CSS @media styling, Android TV APK generation, and a separate tvOS target built from the same project.

### Source excerpt

TV becomes a real form factor: CN.isTV(), runtime device-tv/device-watch CSS @media, an Android TV APK via android.tv, and a tvOS Metal target.

## On-Device Debugging And JUnit 5

DevFeed: [On-Device Debugging And JUnit 5](<https://devfeed.tech/articles/on-device-debugging-and-junit-5-19285.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/developer-workflow-debug-and-junit/>)

Author: Shai Almog

Published: 2026-05-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [IntelliJ IDEA](<https://devfeed.tech/topics/intellij-idea.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ide](<https://devfeed.tech/topics/ide.md>), [simulator](<https://devfeed.tech/topics/simulator.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Code](<https://devfeed.tech/topics/code.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app](<https://devfeed.tech/tags/app.md>), [breakpoint](<https://devfeed.tech/tags/breakpoint.md>), [build](<https://devfeed.tech/tags/build.md>), [code](<https://devfeed.tech/tags/code.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developer](<https://devfeed.tech/tags/developer.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [ide](<https://devfeed.tech/tags/ide.md>), [intellij](<https://devfeed.tech/tags/intellij.md>), [intellij-idea](<https://devfeed.tech/tags/intellij-idea.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [junit](<https://devfeed.tech/tags/junit.md>), [linux](<https://devfeed.tech/tags/linux.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [simulator](<https://devfeed.tech/tags/simulator.md>)

### AI overview

This tutorial describes Codename One's new JDWP-based on-device debugging for ParparVM iOS and Android apps. It explains debugging Java code and objects on simulators and physical devices using IntelliJ IDEA or other JDWP-speaking debuggers, and briefly covers standard JUnit 5 integration with the JavaSE simulator.

### Source excerpt

A walk-through of the new JDWP-based on-device debugging pipeline for ParparVM iOS apps and Android apps, with a step-by-step IntelliJ tutorial for each, and a short tutorial on the new standard JUnit 5 integration against the JavaSE simulator.

## Introducing Chainguard OS Packages: Secure ingredients for custom container builds

DevFeed: [Introducing Chainguard OS Packages: Secure ingredients for custom container builds](<https://devfeed.tech/articles/introducing-chainguard-os-packages-secure-ingredients-for-custom-container-builds-13112.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/introducing-chainguard-os-packages>)

Published: 2026-03-17T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard](<https://devfeed.tech/topics/chainguard.md>), [chainguard os](<https://devfeed.tech/topics/chainguard-os.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [Docker Hardened Images](<https://devfeed.tech/topics/docker-hardened-images.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [bazel](<https://devfeed.tech/topics/bazel.md>), [chainguard sboms](<https://devfeed.tech/topics/chainguard-sboms.md>), [APK](<https://devfeed.tech/topics/apk.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [automation](<https://devfeed.tech/tags/automation.md>), [base-images](<https://devfeed.tech/tags/base-images.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [chainguard-os](<https://devfeed.tech/tags/chainguard-os.md>), [chainguard-os-packages](<https://devfeed.tech/tags/chainguard-os-packages.md>), [chainguard-packages](<https://devfeed.tech/tags/chainguard-packages.md>), [chainguard-sboms](<https://devfeed.tech/tags/chainguard-sboms.md>), [container](<https://devfeed.tech/tags/container.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [cve](<https://devfeed.tech/tags/cve.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [sboms](<https://devfeed.tech/tags/sboms.md>), [secure-software-packages](<https://devfeed.tech/tags/secure-software-packages.md>), [software-packages](<https://devfeed.tech/tags/software-packages.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>), [zero-cve-packages](<https://devfeed.tech/tags/zero-cve-packages.md>)

### AI overview

Chainguard introduces Chainguard OS Packages, a service providing continuously maintained, enterprise-grade packages and base images for teams that build custom container images. Customers retain control over image composition and build tooling while Chainguard handles package sourcing, rebuilding, vulnerability remediation, and SBOM generation.

### Source excerpt

Chainguard OS Packages are enterprise-grade, zero-CVE packages and base images built and continuously maintained in the Chainguard Factory.

## How Chainguard OS Uses Automated Package Garbage Collection to Reduce Security Risk

DevFeed: [How Chainguard OS Uses Automated Package Garbage Collection to Reduce Security Risk](<https://devfeed.tech/articles/this-shit-is-hard-keeping-chainguard-os-lean-current-and-secure-the-power-of-garbage-collection-13286.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/this-shit-is-hard-keeping-chainguard-os-lean-current-and-secure-the-power-of-garbage-collection>)

Published: 2025-12-05T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard os](<https://devfeed.tech/topics/chainguard-os.md>), [open-source-security](<https://devfeed.tech/topics/open-source-security.md>), [Security](<https://devfeed.tech/topics/security.md>), [APK](<https://devfeed.tech/topics/apk.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [Process](<https://devfeed.tech/topics/process.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [automated](<https://devfeed.tech/tags/automated.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [chainguard-operating-system](<https://devfeed.tech/tags/chainguard-operating-system.md>), [chainguard-os](<https://devfeed.tech/tags/chainguard-os.md>), [chainguard-wolfi](<https://devfeed.tech/tags/chainguard-wolfi.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [cves](<https://devfeed.tech/tags/cves.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [security](<https://devfeed.tech/tags/security.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

The article explains how Chainguard automates garbage collection for Chainguard OS and Wolfi APK repositories. It describes filtering older packages and checking dependencies and image usage before removal to keep repositories current and reduce potential attack surface while preserving image customization workflows.

### Source excerpt

Learn how we keep Chainguard OS and Wolfi lean and secure with automated package garbage collection that cuts attack surface while preserving reproducibility.

## PostmarketOS demonstrates Gboard integration for Linux mobile keyboards

DevFeed: [PostmarketOS demonstrates Gboard integration for Linux mobile keyboards](<https://devfeed.tech/articles/in-search-for-a-better-keyboard-41753.md>)

Original publisher: [Read original article](<https://postmarketos.org/blog/2025/04/01/in-search-for-a-better-keyboard/>)

Published: 2025-04-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [postmarketOS Blog](<https://devfeed.tech/sources/postmarketos-blog.md>)

Topics: [keyboard](<https://devfeed.tech/topics/keyboard.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Android APK](<https://devfeed.tech/topics/android-apk.md>), [Software](<https://devfeed.tech/topics/software.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-apk](<https://devfeed.tech/tags/android-apk.md>), [apk](<https://devfeed.tech/tags/apk.md>), [crash](<https://devfeed.tech/tags/crash.md>), [environment](<https://devfeed.tech/tags/environment.md>), [focus](<https://devfeed.tech/tags/focus.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [other](<https://devfeed.tech/tags/other.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>), [tensorflow](<https://devfeed.tech/tags/tensorflow.md>), [training-data](<https://devfeed.tech/tags/training-data.md>)

### AI overview

PostmarketOS demonstrates an experimental keyboard setup in Phosh using Gboard through ATL. The prototype offers suggestions, swiping, autocorrection, and smart input detection, but it crashes often and will not ship because it relies on proprietary software.

### Source excerpt

In our previous blog post 2025 Priorities: Reliability, Audio, Cameras and More, we asked "is there anything that you find terribly important that we have missed here?". And indeed, there was one thing that people would have liked us to focus more on, which is a better keyboard experience. This was unbelievably great timing, because we are actually integrating a new keyboard with the following features: Word complete suggestions Swiping Autocorrection of misspelled words Smart detection of what you meant to type vs. which buttons you have actually hit with your fingers We have hooked it up to Phosh, see it for yourself (this is a video, you might need to click it in order to have it start playing): Tech stack Please note that this is in early development. Currently it is still crashing often and you also need to be comfortable running proprietary software since this is actually Gboard running through ATL. So uh... on second thought we will not be shipping this in postmarketOS. However the underlying technology is very much worth showcasing since it allows running components and apps from that other operating system on proper Linux (Mobile) without running a full container! The video is real, and it shows that it is possible to build features like autocorrection and swiping with the APIs we already have in Linux Mobile today. In fact, phosh-osk-stub and swipeGuess can do most of this already! If somebody out there has the interest, skills and time to improve the Linux mobile keyboards to the point that they work as intuitively as proprietary ones: it is possible, get involved! Try it for yourself If you really want to, you can now run this proprietary piece of TensorFlow based software to tap into the results of training data from millions of Android user's keystrokes while tapping with your fingers on your postmarketOS phone. You can also use these instructions with the open source Hacker's Keyboard. Build ATL from sources: sudo apk add -t .atl-builddeps \ libopensles

## Parameterized Android Tests with Burst 2.0

DevFeed: [Parameterized Android Tests with Burst 2.0](<https://devfeed.tech/articles/parameterized-android-tests-with-burst-2-0-25127.md>)

Original publisher: [Read original article](<https://handstandsam.com/2024/10/31/parameterized-android-tests-with-burst-2-0/>)

Author: Sam Edwards

Published: 2024-10-31T15:52:32Z

Content type: tutorial

Language: en

Sources: [Handstand Sam](<https://devfeed.tech/sources/handstand-sam.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Test coverage](<https://devfeed.tech/topics/coverage.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

The article explains how Burst 2.0, a Kotlin Compiler Plugin, enables parameterized tests for Kotlin Multiplatform and Android instrumentation tests. It reports that the tests compile and execute successfully from the command line, while noting IDE support issues and a use case for statically computing test names for sharding.

### Source excerpt

Parameterized tests allow you to write a test once, but allow it to be called with multiple parameters. This means it is creating more methods than you've written, but without you having to write and maintain each one individually. Here is a trivial example of writing a single test with TestParameterInjector, but having it run [...]

## How to transition to secure container images with new migration guides

DevFeed: [How to transition to secure container images with new migration guides](<https://devfeed.tech/articles/how-to-transition-to-secure-container-images-with-new-migration-guides-13096.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/how-to-transition-to-secure-container-images-with-new-migration-guides>)

Published: 2024-05-22T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [migration](<https://devfeed.tech/topics/migration.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [container-security](<https://devfeed.tech/topics/container-security.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Debian](<https://devfeed.tech/topics/debian.md>)

Tags: [and-best-practices](<https://devfeed.tech/tags/and-best-practices.md>), [apk](<https://devfeed.tech/tags/apk.md>), [base-images](<https://devfeed.tech/tags/base-images.md>), [bash](<https://devfeed.tech/tags/bash.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [build](<https://devfeed.tech/tags/build.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container](<https://devfeed.tech/tags/container.md>), [container-based-application](<https://devfeed.tech/tags/container-based-application.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [container-security](<https://devfeed.tech/tags/container-security.md>), [container-security-strategy](<https://devfeed.tech/tags/container-security-strategy.md>), [cves](<https://devfeed.tech/tags/cves.md>), [debian](<https://devfeed.tech/tags/debian.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [docker-hub-image](<https://devfeed.tech/tags/docker-hub-image.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [guides](<https://devfeed.tech/tags/guides.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [image-migration](<https://devfeed.tech/tags/image-migration.md>), [migration](<https://devfeed.tech/tags/migration.md>), [migration-guides](<https://devfeed.tech/tags/migration-guides.md>), [python-image](<https://devfeed.tech/tags/python-image.md>), [secure-container-image](<https://devfeed.tech/tags/secure-container-image.md>), [secure-container-images](<https://devfeed.tech/tags/secure-container-images.md>)

### AI overview

This guide explains how to migrate container images to Chainguard Images for smaller image sizes, fewer vulnerabilities, and continuous maintenance. It covers using -dev images for shells and package managers, installing bash or zsh when needed, searching for packages with apk, and adapting Dockerfiles and entrypoint scripts.

### Source excerpt

Struggling to adopt secure container images? Our new migration guides provide step-by-step instructions and best practices for a smooth transition.

## Reimagining the Linux distro with Wolfi

DevFeed: [Reimagining the Linux distro with Wolfi](<https://devfeed.tech/articles/reimagining-the-linux-distro-with-wolfi-13209.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/reimagining-the-linux-distro-with-wolfi>)

Published: 2024-02-21T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [chainguard](<https://devfeed.tech/topics/chainguard.md>), [container-security](<https://devfeed.tech/topics/container-security.md>), [Security](<https://devfeed.tech/topics/security.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-security](<https://devfeed.tech/tags/container-security.md>), [cve](<https://devfeed.tech/tags/cve.md>), [linux](<https://devfeed.tech/tags/linux.md>), [melange](<https://devfeed.tech/tags/melange.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [secure-container-images](<https://devfeed.tech/tags/secure-container-images.md>), [security](<https://devfeed.tech/tags/security.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

The article explains why Chainguard created Wolfi, a minimal Linux distribution designed for modern container use. It describes the roles of Melange for building APK packages and Apko for assembling reproducible container images, along with Wolfi's security advisory and vulnerability-management capabilities.

### Source excerpt

Discover Wolfi: Chainguard's answer to modern container security, creating minimal, secure Linux distributions for today's needs.

## Firebase App Distribution Introduces Automated Tester (Beta)

DevFeed: [Firebase App Distribution Introduces Automated Tester (Beta)](<https://devfeed.tech/articles/firebase-app-distribution-introduces-automated-tester-beta-16537.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2024/02/automated-smoke-testing-app-distribution>)

Author: Radhika Advani

Published: 2024-02-21T00:00:00Z

Content type: release

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [Smoke Tests](<https://devfeed.tech/topics/smoke-tests.md>), [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [announce](<https://devfeed.tech/tags/announce.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app-distribution](<https://devfeed.tech/tags/app-distribution.md>), [app-quality](<https://devfeed.tech/tags/app-quality.md>), [automated](<https://devfeed.tech/tags/automated.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firebase-cli](<https://devfeed.tech/tags/firebase-cli.md>), [test-lab](<https://devfeed.tech/tags/test-lab.md>)

### AI overview

Firebase App Distribution introduces Automated Tester (Beta), which runs automated smoke tests on Android app builds across selected devices and API levels. Results include reports with screenshots, video recordings, and issues, with Test Lab rates applying after the daily no-cost cap.

### Source excerpt

News, tutorials, and updates from the Firebase team.

## Crafting Android bytecode analysis tooling using a secret ingredient (Part 1)

DevFeed: [Crafting Android bytecode analysis tooling using a secret ingredient (Part 1)](<https://devfeed.tech/articles/crafting-android-bytecode-analysis-tooling-using-a-secret-ingredient-part-1-22597.md>)

Original publisher: [Read original article](<https://medium.com/bumble-tech/crafting-android-bytecode-analysis-tooling-using-a-secret-ingredient-part-1-13e2d5a65113?source=rss----6353b5325b1a---4>)

Author: Konstantin Zolotov

Published: 2024-02-09T11:50:19Z

Content type: tutorial

Language: en

Sources: [Bumble Tech](<https://devfeed.tech/sources/bumble-tech.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [APK](<https://devfeed.tech/topics/apk.md>), [obfuscation](<https://devfeed.tech/topics/obfuscation.md>), [R8](<https://devfeed.tech/topics/r8.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Java](<https://devfeed.tech/topics/java.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [andriod-app-development](<https://devfeed.tech/tags/andriod-app-development.md>), [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [inlining](<https://devfeed.tech/tags/inlining.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [r8](<https://devfeed.tech/tags/r8.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

This tutorial introduces Android bytecode analysis through DEX inspection and a tool for examining how source-code changes affect compiled binaries. It explains the Android compilation pipeline from Java or Kotlin source through JVM class files and D8-generated DEX files, then describes R8 obfuscation and optimization, including source maps, tree-shaking, inlining, and outlining.

### Source excerpt

During the development process, we often focus on the source code but rarely inspect the compiled bytecode. This means we're missing out on a valuable source of information and data for analysis. How? Let's delve into Dex file inspection and build a tool that demonstrates how source code changes impact the compiled binary. Have you ever set R8 rules to obfuscate your app? Have you used an APK analyzer or a diffuse tool to understand how the code is compiled? Are you confident that debug code hasn't leaked into production? There's another potential pitfall: libraries may provide obfuscation rules (e.g., Gson) that merge with the ones in your project. This means third-party dependencies can alter configurations for the entire app. We often assume everything is fine and that we'll notice if something isn't right. But will we? Does this make you feel uneasy? Does it concern you? Because it certainly concerns me. Here, we'll attempt to enhance the situation and enable you to see precisely how your code changes impact the compiled binary. To better comprehend this, let's start with the code compilation process: It all begins with the Java and/or Kotlin source code, which is then compiled into JVM .class files. Note that at this stage, Java and Kotlin compilers can execute annotation processing tools (APT/KAPT) to generate source code (e.g., Dagger), and Kotlin compiler can run plugins to modify the internal code representation. Then, the D8 compiler takes these compiled classes, third-party libraries (JARs, AARs), and converts them into .dex files. However, if obfuscation and/or minification are enabled (which is almost always the case for release builds), R8 comes into play after D8. R8 obfuscates and optimises the bytecode, and additionally, R8 produces a source map file -- a special file listing all the changes and replacements. Obfuscation replaces human-readable names of various entities (classes, functions, fields, etc.) with very short, yet still unique names, for e

## Images as Code: The pursuit of declarative image builds

DevFeed: [Images as Code: The pursuit of declarative image builds](<https://devfeed.tech/articles/images-as-code-the-pursuit-of-declarative-image-builds-13101.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/images-as-code-the-pursuit-of-declarative-image-builds>)

Published: 2024-01-22T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [bazel](<https://devfeed.tech/topics/bazel.md>), [distroless](<https://devfeed.tech/topics/distroless.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>), [Infrastructure as code](<https://devfeed.tech/topics/infrastructure-as-code.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [code](<https://devfeed.tech/tags/code.md>), [container-image](<https://devfeed.tech/tags/container-image.md>), [containers](<https://devfeed.tech/tags/containers.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [distroless](<https://devfeed.tech/tags/distroless.md>), [docker](<https://devfeed.tech/tags/docker.md>), [infrastructure-as-code](<https://devfeed.tech/tags/infrastructure-as-code.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [reproducibility](<https://devfeed.tech/tags/reproducibility.md>), [terraform](<https://devfeed.tech/tags/terraform.md>)

### AI overview

The article traces the pursuit of declarative container image builds. It critiques imperative Dockerfile-based builds for making multi-tenant, multi-architecture, and reproducible builds difficult, then discusses Bazel and distroless images as steps toward expressing intended build state. Kubernetes and Terraform are presented as examples of declarative systems, inspiring the idea of "Images as Code."

### Source excerpt

Chainguard's CTO Matt Moore describes the process of creating a declarative container image build for Chainguard Images.

## Wolfi: a new paradigm in Linux for containers

DevFeed: [Wolfi: a new paradigm in Linux for containers](<https://devfeed.tech/articles/wolfi-a-new-paradigm-in-linux-for-containers-13336.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/wolfi-a-new-paradigm-in-linux-for-containers>)

Published: 2024-01-17T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [containers](<https://devfeed.tech/tags/containers.md>), [linux](<https://devfeed.tech/tags/linux.md>), [melange](<https://devfeed.tech/tags/melange.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [security](<https://devfeed.tech/tags/security.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

Wolfi is a minimal Linux distribution designed for containerized applications. The article describes its focus on efficiency, security, rapid updates, reproducible APK-based package management, and container image creation through melange and apko.

### Source excerpt

Wolfi is a Linux distribution built specifically for containerized applications. See how it can speed up your development process.

## Building minimal, up-to-date cloud images with Wolfi

DevFeed: [Building minimal, up-to-date cloud images with Wolfi](<https://devfeed.tech/articles/building-minimal-up-to-date-cloud-images-with-wolfi-12908.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/building-minimal-up-to-date-cloud-images-with-wolfi>)

Published: 2023-12-15T00:00:00Z

Content type: article

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Cloud](<https://devfeed.tech/topics/cloud.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [DevOps](<https://devfeed.tech/topics/devops.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [chainguard-academy](<https://devfeed.tech/tags/chainguard-academy.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [common-vulnerabilities-and-exposures](<https://devfeed.tech/tags/common-vulnerabilities-and-exposures.md>), [container](<https://devfeed.tech/tags/container.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [devops](<https://devfeed.tech/tags/devops.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [kubecon-na](<https://devfeed.tech/tags/kubecon-na.md>), [melange](<https://devfeed.tech/tags/melange.md>), [minimalism](<https://devfeed.tech/tags/minimalism.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [packages](<https://devfeed.tech/tags/packages.md>), [security](<https://devfeed.tech/tags/security.md>), [software-supply-chain-security](<https://devfeed.tech/tags/software-supply-chain-security.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

The article introduces Wolfi, an open source project for building minimal, up-to-date cloud and container images. It explains how Wolfi's security-first architecture, proactive updates, minimalism, and supporting tools such as melange, apko, and apk help reduce attack surfaces and CVE exposure while improving software supply chain security.

### Source excerpt

Discover Wolfi OS: Crafting minimal, always up-to-date cloud images for superior security and efficiency in the cloud.

## The incremental path to container images: Chainguard Images

DevFeed: [The incremental path to container images: Chainguard Images](<https://devfeed.tech/articles/the-incremental-path-to-container-images-chainguard-images-13259.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/the-incremental-path-to-container-images-chainguard-images>)

Published: 2023-11-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [vulnerability management](<https://devfeed.tech/topics/vulnerability-management.md>), [Exploit](<https://devfeed.tech/topics/exploit.md>)

Tags: [alpine](<https://devfeed.tech/tags/alpine.md>), [apk](<https://devfeed.tech/tags/apk.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-image](<https://devfeed.tech/tags/container-image.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [distroless-containers](<https://devfeed.tech/tags/distroless-containers.md>), [hardened-images](<https://devfeed.tech/tags/hardened-images.md>), [helm](<https://devfeed.tech/tags/helm.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [kyverno](<https://devfeed.tech/tags/kyverno.md>), [prometheus](<https://devfeed.tech/tags/prometheus.md>), [sigstore](<https://devfeed.tech/tags/sigstore.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

This article explains an incremental approach to migrating existing container images to Chainguard Images. It recommends starting with hardened Application Images that can often be adopted as drop-in replacements, then progressing toward Base Images.

### Source excerpt

Explore how easy it is to migrate existing container images to Chainguard Images, whether you are adopting Application Images or Base Images.

## Announcing Bazel rules for extending Chainguard Images

DevFeed: [Announcing Bazel rules for extending Chainguard Images](<https://devfeed.tech/articles/announcing-bazel-rules-for-extending-chainguard-images-12875.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/announcing-bazel-rules-for-extending-chainguard-images>)

Published: 2023-10-24T00:00:00Z

Content type: release

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [chainguard images](<https://devfeed.tech/topics/chainguard-images.md>), [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [container images](<https://devfeed.tech/topics/container-images.md>), [distroless](<https://devfeed.tech/topics/distroless.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [apko](<https://devfeed.tech/tags/apko.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [distroless](<https://devfeed.tech/tags/distroless.md>), [sbom](<https://devfeed.tech/tags/sbom.md>), [secure-software](<https://devfeed.tech/tags/secure-software.md>), [secure-software-supply-chain](<https://devfeed.tech/tags/secure-software-supply-chain.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

Chainguard and Aspect.Dev announce the general availability of rules_apko, an open source Bazel plugin for building secure, minimal Wolfi-based OCI container images. The article explains how rules_apko integrates APK packages and Wolfi-base images into existing Bazel workflows, supports reproducible builds, and provides dependency locking, integrity verification, and SBOM generation.

### Source excerpt

Explore Bazel rules for Chainguard Images, your pathway to secure, effortless image extension.

## Pokedex UI Testing Series: Getting Started with Maestro in Expo & React Native -- Part 1

DevFeed: [Pokedex UI Testing Series: Getting Started with Maestro in Expo & React Native -- Part 1](<https://devfeed.tech/articles/pokedex-ui-testing-series-getting-started-with-maestro-in-expo-react-native-part-1-22918.md>)

Original publisher: [Read original article](<https://maestro.dev/blog/pokedex-ui-testing-series-getting-started-with-maestro-in-expo-react-native-part-1>)

Author: Ashish Kharche

Published: 2023-08-19T07:00:00Z

Content type: tutorial

Language: en

Sources: [mobile.dev - Medium](<https://devfeed.tech/sources/mobile-dev-medium.md>)

Topics: [Expo](<https://devfeed.tech/topics/expo.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [APK](<https://devfeed.tech/topics/apk.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [ios](<https://devfeed.tech/tags/ios.md>), [maestro](<https://devfeed.tech/tags/maestro.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>)

### AI overview

A guide to setting up local UI testing for an Expo React Native Pokedex app with Maestro on Android and iOS. It covers repository setup, Expo and EAS configuration, development builds, emulator or simulator installation, and a basic Maestro test flow.

### Source excerpt

Setup Expo Development builds for Android & iOS

## Get current flavor in Android Gradle

DevFeed: [Get current flavor in Android Gradle](<https://devfeed.tech/articles/get-current-flavor-in-android-gradle-25847.md>)

Original publisher: [Read original article](<https://medium.com/@banmarkovic/get-current-flavor-in-android-gradle-6d23d27259e3?source=rss-8aced922ece------2>)

Author: Ban Markovic

Published: 2023-08-07T12:20:20Z

Content type: tutorial

Language: en

Sources: [Stories by Ban Markovic on Medium](<https://devfeed.tech/sources/stories-by-ban-markovic-on-medium.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [apk](<https://devfeed.tech/tags/apk.md>), [assemble](<https://devfeed.tech/tags/assemble.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This tutorial explains how Android product flavors support multiple app variants from one codebase and how to identify the selected flavor in Gradle scripts. It focuses on a Kotlin DSL implementation of a getCurrentFlavor function and mentions a Groovy version.

### Source excerpt

Gradle is a topic that most Android developers postpone to learn as much as they can. This happens until we realize that it is a crucial part when it comes to packaging our apps or SDKs (here is my article that can help you out with understanding Gradle better). Since the diversity of Android devices is huge, we always need to strive not to package unnecessary things. Product flavors Sometimes it is required from us to publish different versions of our app, depending on the different requirements of our clients. This leads us to having one codebase that can support multiple configuration changes (enabling or disabling particular features) depending on our clients. To avoid changing our code each time we want to publish a different version of our app, we use product flavors. They enable us to set up different app variants at project level, and then we can reference them in our code, in order to enable or disable something. Problem Enabling or disabling particular features inside our Kotlin code is not that complex, but in order to follow those toggles, sometimes we would also like to include or exclude some plugins or libraries. Since this type of work is done in Gradle, there is a need for us to know which product flavor is selected in our Gradle file. Solution Writing Gradle scripts can be done with Kotlin DSL or Groovy, and since we already know Kotlin, I will focus on explaining the Kotlin DSL solution and later on I will also provide the full Groovy version of our getCurrentFlavor function. By using Kotlin DSL in our Gradle scripts, we can add any function at the bottom of our app/build.gradle.kts file, so let's create our getCurrentFlavor() function that returns an empty String. fun getCurrentFlavor(): String { return "" } Since we are inside our build.gradle.kts file, we have a reference to a Gradle object that belongs to our project. Inside it, we have the information of the parameters that the Gradle object uses for starting the build. By having that informa

## Keeping Up with Android App Size Growth

DevFeed: [Keeping Up with Android App Size Growth](<https://devfeed.tech/articles/keeping-up-with-android-app-size-growth-15735.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/keeping-up-with-android-app-size-growth>)

Author: Justin Wong

Published: 2023-06-27T06:00:00Z

Content type: article

Language: en

Sources: [Square Corner Blog](<https://devfeed.tech/sources/square-corner-blog-medium.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [APK](<https://devfeed.tech/topics/apk.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-bundle](<https://devfeed.tech/tags/android-app-bundle.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app-size](<https://devfeed.tech/tags/app-size.md>), [build](<https://devfeed.tech/tags/build.md>), [ci](<https://devfeed.tech/tags/ci.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

Square describes how it manages Android app size growth across a monorepo by applying size-reduction techniques, tracking changes in continuous integration, and improving team accountability. The post also covers automation and tools for identifying savings and comparing APK versions.

### Source excerpt

Tracking app size changes in CI and ensuring team accountability

[Next page](<https://devfeed.tech/tags/apk.md?cursor=WyIyMDIzLTA2LTI3VDA2OjAwOjAwKzAwOjAwIiwgIjQ5YzIwZDA2LWNkYTAtNDhmNi1hNmEwLWZjNDRhZGQwMDU5YyJd>)