Free Case Study · APK Reverse Engineering

Duolingo APK Analysis

How we decompiled Duolingo (com.duolingo) to map its IronSource-centered ad mediation, Kotlin + Compose + Unity hybrid stack, and full API surface - the same depth you get for any Google Play competitor via AppXray.

Version6.79.5 (2361)
Size246 MB XAPK, main 164 MB
ArchitectureKotlin + Compose + Unity
DEX files11 (~63 MB bytecode)

Key findings at a glance

Architecture overview

Duolingo is a large native Android app built primarily with Kotlin + Jetpack Compose. Select experiences (chess, certain interactive modules) run inside an embedded Unity runtime. Multi-DEX (11 files), ProGuard enabled, R8-style obfuscation, XAPK split delivery.

ModuleTechnology
Lessons, profile, leagues, onboarding, Plus flowsKotlin + Jetpack Compose
NetworkingOkHttp + Retrofit, Cronet for streaming
Local persistenceRoom, DataStore
Audio / videoExoPlayer (lessons, promos, TTS)
AnimationsLottie + Rive (modular_rive_lily.json, CDN Lottie)
Game / interactive modulesEmbedded Unity (UnityActivity, UnityPlayerGameActivity)
MonetizationGoogle Play Billing + IronSource mediation
Component counts242 Activities, 17 Services, 11 DEX

Ad networks & mediation

This is what detect IronSource mediation in APK and Android ad waterfall analysis look like in practice - all networks plus how they wire into a single mediation hub.

NetworkRole
IronSource (LevelPlay)Mediation hub - 3,952+ class references in bytecode
Unity AdsRewarded + interstitial via Unity / IronSource
VungleVideo; mediation adapter
MolocoPerformance / programmatic
Google AdMobBanner, interstitial, rewarded, native
Meta Audience NetworkRuntime-loaded audience_network.dex (~5 MB)
Pangle (ByteDance)High fill for Asian traffic

First-party ad surfaces include CustomNativeAdActivity, FullscreenNetworkNativeAdActivity, and a dedicated PlusPromoVideoActivity for session-end Super/Plus upsell - ad UX is partly first-party, partly mediation-driven.

API endpoints extracted from APK

Example of extract API endpoints from an Android app - first-party gateway, regional split (global vs China), dedicated subsystems (goals, sessions, Sentry), and multiple staging hosts left in the production build.

EndpointPurpose
android-api.duolingo.comPrimary global API gateway
android-api.duolingo.cnChina region API
goals-api.duolingo.comDaily goals / streak service
sessions.duolingo.comLesson session state
infra-edge-gateway.duolingo.comEdge gateway (Cloudflare-fronted)
duolingo-sentry.sentry.ioDedicated Sentry tenant (incl. session replay)
android-api-stage.duolingo.comStaging API - exposed in production
goals-api-stage-2.duolingo.comStaging goals service - exposed in production

Full report lists all extracted endpoints plus third-party ad/analytics domains.

SDK list (sample)

Third-party SDKs categorized in the full report - ads, analytics, auth, attribution, runtimes. Highlights:

Same depth for your competitor

Get a Duolingo-level report for any app

Send a Google Play link. Full APK decompilation, SDK detection, ad mediation analysis, and API extraction - PDF + Markdown in 2 hours. From $29 per app.