# APK

APK is an Android package archive file containing an app's runtime contents, used by Android devices to install the app.

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. Зловред устанавливался как обычное пользовательское приложение и никак не маскировался под легитимное ПО. Точнее, у него полностью отсутствовал интерфейс, что указывало на возможность установки без ведома пользователя. Дроппер расшифровывает данные и запускает следующий этап атаки -- вредоносный загрузчик. Он, в свою очередь, отправляет информацию на командный сервер злоумышленников, скачивает оттуда и запускает финальную полезную нагрузку -- кликер на рекламные баннеры и реверс-прокси. Читать далее

## 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

## BTMOB: A stealthy RAT burrowing deep into Android devices

DevFeed: [BTMOB: A stealthy RAT burrowing deep into Android devices](<https://devfeed.tech/articles/btmob-a-stealthy-rat-burrowing-deep-into-android-devices-8390.md>)

Original publisher: [Read original article](<https://www.welivesecurity.com/en/malware/btmob-stealthy-rat-burrowing-deep-android-devices/>)

Author: Daniel Cunha Barbosa

Published: 2026-05-26T08:50:00Z

Content type: article

Language: en

Sources: [WeLiveSecurity](<https://devfeed.tech/sources/welivesecurity.md>)

Topics: [ransomware](<https://devfeed.tech/topics/ransomware.md>), [Remote Access Trojan](<https://devfeed.tech/topics/remote-access-trojan.md>), [Android](<https://devfeed.tech/topics/android.md>), [Social engineering](<https://devfeed.tech/topics/social-engineering.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [malware](<https://devfeed.tech/tags/malware.md>), [phishing](<https://devfeed.tech/tags/phishing.md>), [remote-access-trojan](<https://devfeed.tech/tags/remote-access-trojan.md>), [social-engineering](<https://devfeed.tech/tags/social-engineering.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

BTMOB is an Android remote access trojan that spreads through phishing websites, fake app stores, and malicious APKs. It can exfiltrate sensitive data, capture screenshots, record device activity, and enable remote control. Its APK builder and malware-as-a-service model make customized campaigns easier to launch.

### Source excerpt

The malware pairs remote access capabilities with ready-made campaign tools, lowering the barrier for full device compromise

## Chainguard brings first-party RHEL 9 and RHEL 10 RPM support to Chainguard OS, joins FINOS

DevFeed: [Chainguard brings first-party RHEL 9 and RHEL 10 RPM support to Chainguard OS, joins FINOS](<https://devfeed.tech/articles/chainguard-brings-first-party-rhel-9-and-rhel-10-rpm-support-to-chainguard-os-joins-finos-12933.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/chainguard-brings-first-party-rhel-9-and-rhel-10-rpm-support-to-chainguard-os-joins-finos>)

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

Content type: news

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>), [chainguard containers](<https://devfeed.tech/topics/chainguard-containers.md>), [Security](<https://devfeed.tech/topics/security.md>), [Critical Infrastructure](<https://devfeed.tech/topics/critical-infrastructure.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Cloud Native Ecosystem](<https://devfeed.tech/topics/cloud-native-ecosystem.md>), [Resilience](<https://devfeed.tech/topics/resilience.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [chainguard](<https://devfeed.tech/tags/chainguard.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-finserv](<https://devfeed.tech/tags/chainguard-finserv.md>), [chainguard-os](<https://devfeed.tech/tags/chainguard-os.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cloud-native](<https://devfeed.tech/tags/cloud-native.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [container](<https://devfeed.tech/tags/container.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [containers](<https://devfeed.tech/tags/containers.md>), [critical-infrastructure](<https://devfeed.tech/tags/critical-infrastructure.md>), [cve](<https://devfeed.tech/tags/cve.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [hardening](<https://devfeed.tech/tags/hardening.md>), [images](<https://devfeed.tech/tags/images.md>), [linux](<https://devfeed.tech/tags/linux.md>), [make](<https://devfeed.tech/tags/make.md>), [mythos](<https://devfeed.tech/tags/mythos.md>), [open](<https://devfeed.tech/tags/open.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [project-glasswing](<https://devfeed.tech/tags/project-glasswing.md>), [rhel](<https://devfeed.tech/tags/rhel.md>), [rhel-10](<https://devfeed.tech/tags/rhel-10.md>), [rhel-9](<https://devfeed.tech/tags/rhel-9.md>)

### AI overview

Chainguard announces first-party RHEL 9 and RHEL 10 RPM compatibility for packages in Chainguard Containers built on Chainguard OS. The company also announces that it is joining FINOS to support open source collaboration in financial infrastructure.

### Source excerpt

Chainguard adds first-party RHEL 9/10 RPM compatibility and joins FINOS, helping financial institutions modernize securely for the AI-driven threat era.

## 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.

## Custom Assembly and Private APK Repositories are Now Generally Available

DevFeed: [Custom Assembly and Private APK Repositories are Now Generally Available](<https://devfeed.tech/articles/custom-assembly-and-private-apk-repositories-are-now-generally-available-13014.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/custom-assembly-and-private-apk-repositories-now-generally-available>)

Published: 2025-07-15T00:00:00Z

Content type: release

Language: en

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

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

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [apk-repositories](<https://devfeed.tech/tags/apk-repositories.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [container-images](<https://devfeed.tech/tags/container-images.md>), [custom-assembly](<https://devfeed.tech/tags/custom-assembly.md>), [cve-remediation](<https://devfeed.tech/tags/cve-remediation.md>), [new-features](<https://devfeed.tech/tags/new-features.md>), [secure-image](<https://devfeed.tech/tags/secure-image.md>), [slsa](<https://devfeed.tech/tags/slsa.md>)

### AI overview

Chainguard announces the general availability of Custom Assembly and Private APK Repositories for Chainguard Containers. The features let customers customize container images, access Chainguard packages through customer-specific endpoints, and use Chainguard Factory for automated builds and ongoing maintenance.

### Source excerpt

Custom Assembly and Private APK Repositories, two new features for Chainguard Containers, are now generally available.

## 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.

## 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

## 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

## 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 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

## Designing build date epoch in Chainguard Images

DevFeed: [Designing build date epoch in Chainguard Images](<https://devfeed.tech/articles/designing-build-date-epoch-in-chainguard-images-13019.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/designing-build-date-epoch-in-chainguard-images>)

Published: 2023-06-08T00: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>), [container images](<https://devfeed.tech/topics/container-images.md>), [Git](<https://devfeed.tech/topics/git.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [APK](<https://devfeed.tech/topics/apk.md>)

Tags: [apk](<https://devfeed.tech/tags/apk.md>), [build-date-epoch](<https://devfeed.tech/tags/build-date-epoch.md>), [chainguard-images](<https://devfeed.tech/tags/chainguard-images.md>), [container-image](<https://devfeed.tech/tags/container-image.md>), [cves](<https://devfeed.tech/tags/cves.md>), [git](<https://devfeed.tech/tags/git.md>), [images](<https://devfeed.tech/tags/images.md>), [secure-image](<https://devfeed.tech/tags/secure-image.md>), [wolfi](<https://devfeed.tech/tags/wolfi.md>)

### AI overview

This article explains how Chainguard Images use deterministic timestamps to remain reproducible without displaying a misleading 1970 creation date. It describes source date epoch, Git commit timestamps, APK package metadata, and the additional build date epoch considerations when images incorporate newer packages to address CVEs.

### Source excerpt

Learn how we make Chainguard Images reproducible using build date epoch.

## About the Android Makers app, security and google-services.json

DevFeed: [About the Android Makers app, security and google-services.json](<https://devfeed.tech/articles/about-the-android-makers-app-security-and-google-services-json-25429.md>)

Original publisher: [Read original article](<https://blog.mbonnin.net/about-the-android-makers-app-security-and-google-servicesjson>)

Author: Martin Bonnin

Published: 2022-05-06T13:45:38Z

Content type: article

Language: en

Sources: [Martin Bonnin's blog](<https://devfeed.tech/sources/martin-bonnin-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [API keys](<https://devfeed.tech/topics/api-keys.md>), [Security](<https://devfeed.tech/topics/security.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Google](<https://devfeed.tech/topics/google.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [api](<https://devfeed.tech/tags/api.md>), [apk](<https://devfeed.tech/tags/apk.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [google-cloud](<https://devfeed.tech/tags/google-cloud.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

The article explains why an Android API key in google-services.json is accessible in an app and can be retrieved from a published APK. It discusses the apparent contradiction between that accessibility and warnings about exposing the key in GitHub or Google Play.

### Source excerpt

Android Makers is over! With over 650 participants and 50 sessions over 2 days in Paris, it was a lot of fun! It was nice to see everyone in person again and discuss all the Android things (and 🍻 too)! This year, we decided to rewrite the Android a...

## Fixing APK Analyzer terminal errors by selecting a compatible Java version

DevFeed: [Fixing APK Analyzer terminal errors by selecting a compatible Java version](<https://devfeed.tech/articles/apkanalyzer-error-32349.md>)

Original publisher: [Read original article](<https://dustn.dev/post/2021-12-12-issues-with-apkanalyzer/>)

Author: dustin@dustn.dev (Dustin Summers)

Published: 2021-12-12T10:26:38Z

Content type: tutorial

Language: en

Sources: [Dustin Summers](<https://devfeed.tech/sources/dustin-summers.md>)

Topics: [APK](<https://devfeed.tech/topics/apk.md>), [Java](<https://devfeed.tech/topics/java.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android-studio](<https://devfeed.tech/tags/android-studio.md>), [android-xmlschema-error-apkanalyzer-troubleshooting](<https://devfeed.tech/tags/android-xmlschema-error-apkanalyzer-troubleshooting.md>), [apk](<https://devfeed.tech/tags/apk.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [error](<https://devfeed.tech/tags/error.md>), [java](<https://devfeed.tech/tags/java.md>), [jdk](<https://devfeed.tech/tags/jdk.md>)

### AI overview

This tutorial addresses an APK Analyzer error encountered when running the tool from a terminal, including in a CI/CD workflow. It explains that Android Studio's bundled JDK may be incompatible and describes selecting another installed Java version, with guidance for making the change permanent.

### Source excerpt

Recently, I was tasked with using Google provided tools to decompile an APK in a CI/CD pipeline. This is great, because Google provides a tool called APK Analyzer, and provide tools both within the IDE itself and options to run it via the Command Line. I can talk more about the actual task later. For now, I want to discuss the issue that I first ran into when attempting to run apkanalyzer from the terminal.

## Reducing Android app size in practice at LinkedIn

DevFeed: [Reducing Android app size in practice at LinkedIn](<https://devfeed.tech/articles/reducing-android-app-size-in-practice-at-linkedin-25911.md>)

Original publisher: [Read original article](<https://medium.com/microsoft-mobile-engineering/reducing-android-app-size-in-practice-at-linkedin-559698e618b9?source=rss-d19045640fe------2>)

Author: Chao Zhang

Published: 2021-11-23T16:53:49Z

Content type: tutorial

Language: en

Sources: [Stories by Chao Zhang on Medium](<https://devfeed.tech/sources/stories-by-chao-zhang-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [APK](<https://devfeed.tech/topics/apk.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Azure](<https://devfeed.tech/topics/azure.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-bundle](<https://devfeed.tech/tags/android-app-bundle.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [apk](<https://devfeed.tech/tags/apk.md>), [app-size](<https://devfeed.tech/tags/app-size.md>), [azure](<https://devfeed.tech/tags/azure.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [modules](<https://devfeed.tech/tags/modules.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

This article explains how LinkedIn reduced Android app download size in practice. It distinguishes download, install, and storage sizes, then discusses Android App Bundle optimizations and Play Feature Delivery, including their use with the Azure Communication Services SDK for Native Video Meeting.

### Source excerpt

Photo: Daniel Romero from Unsplash App size is a key metric impacting user acquisition and retention: If the app is too large to download, users may skip installation or cancel the installation during downloading; if the app takes too much storage space after use, users may choose to uninstall. There are also different measurements of Android app sizes: Download size: The compressed size of the release downloaded by users at install time. Install size: The approximate size of the recent release on the user's device after installation, but before the app is opened for the first time. Space used shown in Storage Settings: Sizes of files under cache directory and other directories under /data/data/com.app.package.name This post mainly focuses on the download size. This is displayed directly in the Google Play console for developers, and also displayed in the about this app section in Play Store. The official documentation on Android Developers already covers many different ways to optimize the app size. However, in this blog post, we would like to emphasize some of the less known yet powerful techniques to reduce app size. These techniques helped LinkedIn to minimize its app size in recent years. Play Feature Deliverya.k.a Dynamic Features, Dynamic Modules, or On-Demand modules Android App Bundle, as a publishing format in Google Play, was recently escalated to the requirement for publishing new applications in August 2021. The app bundle is used to generate multiple optimized APKs. Then the user will only download the specific APK set optimized for their device. The download size savings come from: ABI libraries that do not match the device's processor architecture Resource files that do not match screen density Language resources that do not match the user's device language Application size savings from Android App Bundle (Google I/O 2018) -- https://youtu.be/flU42CTF3MQ Migrating to an Android App Bundle should be a streamlined process. At least this was the case for

## Intercept and edit HTTP traffic from (almost) any Android app

DevFeed: [Intercept and edit HTTP traffic from (almost) any Android app](<https://devfeed.tech/articles/intercept-and-edit-http-traffic-from-almost-any-android-app-19076.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/inspect-any-android-apps-http/>)

Author: HTTP Toolkit; Tim Perry

Published: 2021-03-24T17:00:00Z

Content type: tutorial

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [SDK](<https://devfeed.tech/topics/sdk.md>), [APK](<https://devfeed.tech/topics/apk.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [dev-tools](<https://devfeed.tech/topics/dev-tools.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>), [debug](<https://devfeed.tech/tags/debug.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [http](<https://devfeed.tech/tags/http.md>), [interception](<https://devfeed.tech/tags/interception.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

A step-by-step guide to intercepting and editing HTTP traffic from Android apps using a normal Android emulator, Android Studio, APK installation, and HTTP Toolkit. It explains why HTTPS traffic is difficult to inspect and describes emulator configuration requirements.

### Source excerpt

HTTP is used by almost all Android apps to request data, load content, and send changes to backend servers. If you can see and edit these requests & responses then you can understand, debug, and change how any app works, but Android makes this hard to do. By default, almost all apps will use HTTPS but won't trust user-installed certificates. This means that you can't see their traffic with simple proxy tools, and you can't manually trust HTTPS debugging proxies without either editing and rebuilding the entire app, or setting up your own rooted device. Fortunately, there's a quick & easy way around this: you can manually install official APKs into a normal Android emulator, which provides enough access that tools like HTTP Toolkit can capture all traffic for most apps for you totally automatically, and allow you to edit responses in just a couple of clicks. Let's walk through how to do that, step-by-step: Setting up the emulator To get started, you'll need an emulator. It is possible to create and start one using the Android SDK directly (see this article) but it's easiest to just install Android Studio, create an empty project, and use the developer tools provided there (if you're not familiar with these developer tools at all, there's an detailed official guide). To create an interceptable Android emulator, you should create an AVD, that: Can be any device model, though things may be smoother with a popular device like a Pixel 4. Uses an image matching your computer's architecture (ARM64 on M1/M2 Macs, x86_64 on most other computers) since the performance will be far better. Uses a relatively recent stable Android version - Android 7 to 13 should be fine. Uses a 'Google APIs' or 'Android Open Source Project' target image. The 'Google Play' target includes extra restrictions and is not easily interceptable. Once you've created your emulator, start it, and then we need to install the target app. Since we don't have Google Play, you can't do that from the normal app s

## Aircall Journey to Android App Bundle

DevFeed: [Aircall Journey to Android App Bundle](<https://devfeed.tech/articles/aircall-journey-to-android-app-bundle-25946.md>)

Original publisher: [Read original article](<https://medium.com/inside-aircall/aircall-journey-to-android-app-bundle-14d0df0d0ea7?source=rss-cbfc736ddcd3------2>)

Author: Julien Salvi

Published: 2021-02-18T15:12:51Z

Content type: tutorial

Language: en

Sources: [Stories by Julien Salvi on Medium](<https://devfeed.tech/sources/stories-by-julien-salvi-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [APK](<https://devfeed.tech/topics/apk.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [CircleCI](<https://devfeed.tech/topics/circleci.md>), [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [ci](<https://devfeed.tech/topics/ci.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-bundle](<https://devfeed.tech/tags/android-app-bundle.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [apk](<https://devfeed.tech/tags/apk.md>), [ci](<https://devfeed.tech/tags/ci.md>), [circleci](<https://devfeed.tech/tags/circleci.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [play-store](<https://devfeed.tech/tags/play-store.md>)

### AI overview

Aircall describes migrating its Android app from APK distribution to Android App Bundle to deliver optimized APKs. The article covers APK size reduction, language, density, and ABI splits, Gradle configuration, and planned Play Feature Delivery, with CircleCI and fastlane mentioned for release automation.

### Source excerpt

A couple months, we decided to use Android App Bundle (AAB) to distribute Aircall's Android app in Play Store. After analyzing the Aircall Android application package (APK), we found we could deliver optimized APKs to our users -- an overall size reduction of 60%! In this article, we are going to expose our journey to Android App Bundle from our own motivations to the development within the application and the CI with CircleCI and fastlane to release on the Play Store. Why move to App Bundle? Moving to App Bundle had many advantages. The first and main reason was the APK size optimization, to deliver only what the user needs. After looking at our application file, we found that we embedded all native libraries (.so files) of all supported architectures! We could have used the abi split in our main build.gradle but we would have managed 4 APKs with different version code. We also saw we could reduce the resource assets to match the density of the device where the app is installed. Here is what the Aircall universal APK looks like on the inside: APK analysis with Android Studio Optimizing size was not the only advantage we saw. Migrating to AAB will allow us (a little bit) to save the planet! Indeed, with all the MB saved from the downloads and updates, we are using less storage space and consuming fewer energy resources. You can see our MAD Score below. If it hits 1 million downloads we could save 22 TB of data -- really a huge impact. MAD Score data from the Aircall project We were also excited by our future ability to enable Play Feature Delivery to push features to specific users. Since we are already using feature flags inside our applications, this would let us develop features on-the-go for our users. Gradle configuration Moving to AAB was a very smooth process and did not require a lot of configuration code. To replicate this move, on your build.gradle of your application, add the following block to build an AAB file. You will be able to add the language, densit

## Presenting data efficiently in emails

DevFeed: [Presenting data efficiently in emails](<https://devfeed.tech/articles/presenting-data-efficiently-in-emails-25908.md>)

Original publisher: [Read original article](<https://chao2zhang.medium.com/presenting-data-efficiently-in-emails-f27cb5f9119e?source=rss-d19045640fe------2>)

Author: Chao Zhang

Published: 2021-01-29T01:25:52Z

Content type: tutorial

Language: en

Sources: [Stories by Chao Zhang on Medium](<https://devfeed.tech/sources/stories-by-chao-zhang-on-medium.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Android Gradle Plugin](<https://devfeed.tech/topics/android-gradle-plugin.md>), [email](<https://devfeed.tech/topics/email.md>), [ci](<https://devfeed.tech/topics/ci.md>), [APK](<https://devfeed.tech/topics/apk.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-gradle-plugin](<https://devfeed.tech/tags/android-gradle-plugin.md>), [apk](<https://devfeed.tech/tags/apk.md>), [ci](<https://devfeed.tech/tags/ci.md>), [data](<https://devfeed.tech/tags/data.md>), [data-visualization](<https://devfeed.tech/tags/data-visualization.md>), [email](<https://devfeed.tech/tags/email.md>), [numbers](<https://devfeed.tech/tags/numbers.md>)

### AI overview

The article presents a simple technique for making email reports more engaging by displaying key metrics with less text and larger numbers. It illustrates the approach with an Android Gradle Plugin upgrade report covering CI build-time reductions and APK size changes, and connects the idea to public COVID-19 dashboards.

### Source excerpt

A simple trick to write an email report for your readers Image by Hermann Traub from Pixabay Recently my team wrote an email report to the leadership team on the executive summary of Android Gradle Plugin upgrades. Below is the initial version of the reports in the exec summary section: - We have migrated to Android Gradle Plugin from 4.0 to 4.1. -We have observed a reduction in CI build by 50% at 50th percentile and 32% at 90th percentile. - Our APK size is also reduced by -17% The above looks pretty ordinary. But let's compare it to the following: Less text, larger numbers, much easier for readers to get interested in reading them 🎉 Testimony: I have received more than 5 "wow"s from readers across the company hierarchy for the bottom version. The inspiration is actually from the COVID-19 dashboard of where I live. I came to realize how often it is used in public versus how rare it is used in company emails.

## Debugging Proguard configuration issues

DevFeed: [Debugging Proguard configuration issues](<https://devfeed.tech/articles/debugging-proguard-configuration-issues-38645.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2021_01_18_debugging_proguard_configuration_issues/>)

Published: 2021-01-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Android](<https://devfeed.tech/topics/android.md>), [APK](<https://devfeed.tech/topics/apk.md>), [obfuscation](<https://devfeed.tech/topics/obfuscation.md>), [builds](<https://devfeed.tech/topics/builds.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apk](<https://devfeed.tech/tags/apk.md>), [article](<https://devfeed.tech/tags/article.md>), [build](<https://devfeed.tech/tags/build.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>)

### AI overview

A tutorial on diagnosing Android release-build bugs caused by Proguard/R8 configuration. It outlines the roles of obfuscation, code optimization, and resource optimization, and recommends using crash logs and APK contents to investigate issues.

### Source excerpt

Introduction It might happen so that there is a bug in your release build while in debug everything works fine. In many cases, it might be an issue with Proguard/R8 configuration. Of course, it is better to test your code thoroughly, properly configure Proguard if you, let's say, load some classes only via reflection and so on. But reality sometimes strikes and bugs might go to production. In this case, the first thing that is needed is to find a bug and fix it. And only then have some retrospective to mitigate such situations in the future. When the bug is in production already every minute counts, therefore it is important to have some plan. Proguard configuration seems complex to someone who didn't work with it, so I recommend to take a look at its main features. Most of the time I'd say that issue is easy can be found and fixed by analyzing crash report logs. But sometimes the log is not that clear. In this article I'd like to introduce the plan to find what part of "Proguard" causing an issue, so you can debug more effectively.

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