Platformy
Testování Android aplikací
Android sken spustí vaši aplikaci v emulátoru v cloudu a zaznamená, co aplikace posílá analytickým a reklamním knihovnám. Mobilní Compliance si dialog se souhlasem v aplikaci najde a vyzkouší sám. Mobilní Events přehrávají cestu, kterou v aplikaci nahrajete vy.
Tenhle návod vysvětluje, co skeneru dát, co s aplikací udělá a kde jsou hranice toho, co uvidí.
Odkud skener aplikaci vezme
Při zakládání testu máte dvě možnosti:
- URL v Google Play. AnalyticsProof se pokusí aplikaci stáhnout sám a před dalšími skeny stahuje její aktuální verzi. Když stažení selže, nabídne nahrání souboru.
- Nahrání souboru. Soubor
.apknebo.xapkdo 200 MB. Nahraná verze se skenuje pořád stejná, dokud ji nenahradíte. Hodí se pro build před vydáním nebo pro interní verzi, která v obchodě není.
Název balíčku (například com.example.app) skener přečte ze souboru. Když se to nepovede, zadáte ho ručně.
Aplikaci rozdělenou na více APK (split APKs) nahrajte jako .xapk, tedy ZIP se všemi soubory .apk. Skener je nainstaluje společně. Jiné soubory v archivu, například data OBB, neinstaluje. Formát .aab nahrát nejde. Pokud máte jen app bundle, vytvořte z něj univerzální APK nástrojem bundletool:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
unzip app.apks universal.apk
build-apks vytvoří archiv .apks; nahráváte soubor universal.apk, který je uvnitř. Bez --ks bundletool APK podepíše ladicím klíčem z ~/.android/debug.keystore, pokud ten soubor existuje (vytváří ho Android Studio). Když neexistuje, APK zůstane nepodepsané a nepůjde nainstalovat, takže --ks potřebujete. Ladicí klíč stačí, pokud aplikace nekontroluje vlastní podpis a nepoužívá službu vázanou na podpisový certifikát, třeba přihlášení přes Google nebo API klíč omezený na vaši aplikaci. V opačném případě ji podepište vlastním klíčem: přidejte --ks, --ks-key-alias, --ks-pass a --key-pass.
Co skener s aplikací udělá
Aplikaci instalujeme tak, jak ji dodáte. Nepřebalujeme ji a znovu ji nepodepisujeme, takže má váš původní podpis.
Před skenem skener:
- nastaví orientaci obrazovky, která platí po celý sken,
- aplikaci nainstaluje,
- smaže její data, takže se spustí jako poprvé po instalaci, včetně dialogu se souhlasem,
- zapne na zařízení podrobné ladicí záznamy analytických knihoven, které je umí vypisovat, například Google Analytics for Firebase.
Emulátor má certifikát našeho měřicího proxy mezi systémovými certifikáty. Díky tomu může skener u vybraných serverů číst obsah provozu, aniž by do aplikace zasahoval.
Co skener uvidí v provozu
Skener se u každého spojení rozhoduje podle názvu serveru, na který se aplikace připojuje.
- Známé analytické servery (například Meta, Adjust, Amplitude, Mixpanel nebo Braze): skener provoz dešifruje a vidí jednotlivé požadavky, události a parametry.
- Servery Googlu (Firebase, Google Analytics, reklamy Googlu, Play): provoz projde beze změny, skener vidí jen název serveru. Obsah dávek, které Google Analytics for Firebase odesílá, tedy události, parametry a signály souhlasu, ale čte z ladicích záznamů zařízení.
- Všechno ostatní, tedy váš backend, CDN nebo přihlášení: projde beze změny a skener vidí jen název serveru. Váš vlastní provoz nedešifrujeme, takže přihlášení i API fungují jako na běžném telefonu.
Nezávisle na provozu skener projde i balíček aplikace, včetně všech split APK. Pozná tak knihovny, které jsou v aplikaci zabudované, i když během skenu nic neodeslaly.
Aplikace s certificate pinningem
Certificate pinning (v OkHttp, v nativním kódu nebo ve vlastní síťové konfiguraci aplikace) nijak neodstraňujeme ani neobcházíme.
Když aplikace u známého analytického serveru náš certifikát odmítne, skener ten server po zbytek skenu pouští bez dešifrování. Spojení, při kterém aplikace certifikát odmítla, se nepovede, další už projdou normálně. U takového serveru uvidíte, že se na něj aplikace připojuje, a nástroj podle něj poznáme. Co přesně odeslal, ale ne.
Pinning na vlastním backendu na výsledek vliv nemá, ten skener nedešifruje ani bez něj. Ladicí záznamy zařízení a kontrola balíčku fungují stejně s pinningem i bez něj.
Kontroly integrity a detekce emulátoru
Protože aplikaci znovu nepodepisujeme, kontrola vlastního podpisu kvůli nám neselže. Aplikace ale běží v emulátoru s oprávněními správce (root). Aplikace, které kontrolují integritu zařízení (například přes Play Integrity), root nebo emulátor, se proto mohou odmítnout spustit, omezit funkce nebo ukázat chybu.
Když skener v záznamech zařízení pozná, že aplikace kontrolou integrity neprošla nebo odhalila root či emulátor, případně když aplikace vůbec nezobrazí obsah, sken skončí jako „Neměřeno“. Takový sken nemá skóre a nevstupuje do porovnání, baseline ani upozornění.
Pro testování je proto lepší build, ve kterém jsou tyto kontroly vypnuté nebo mírnější, třeba interní testovací verze. Nahrajte ho jako soubor.
Nahrání cesty v aplikaci
Cestu nahrajete v dialogu „Nahrát cestu v aplikaci“. Aplikace běží v emulátoru a obraz se přenáší do prohlížeče. Klepnutím nebo přejetím po obrazovce zaznamenáte kroky. K dispozici jsou i systémová tlačítka Zpět, Domů a Nedávné aplikace. Dokud aplikace nenaběhne, jsou klepnutí vypnutá.
Na co myslet:
- Orientace. Na výšku nebo na šířku zvolíte před nahráváním a během něj ji změnit nejde. Přehrání běží ve stejné orientaci, protože kroky jsou místa na obrazovce.
- Souhlas. Aplikace startuje se smazanými daty, takže uvidíte dialog se souhlasem jako nový uživatel. Klepněte na volbu, kterou chcete testovat. Přehrání zopakuje přesně vaše klepnutí. Nic jiného dialog za vás neodklikne.
- Systémová oprávnění. Při nahrávání i při přehrání dostane aplikace oprávnění předem povolená, takže systémové dotazy na oprávnění se neobjeví a nenahrávejte je.
Při přehrání skener hledá prvek, na který jste klepli, podle struktury obrazovky. Když ho nenajde, klepne na zaznamenané souřadnice.
V čem se výsledky liší od webu
- Jiné stopy. Aplikace nemá cookies ani dataLayer. Skener pracuje s provozem, ladicími záznamy zařízení a obsahem balíčku.
- Viditelnost podle serveru. Obsah požadavků vidíte jen u dešifrovaných serverů. U ostatních jde o to, že se aplikace na server připojila.
- Jiný seznam nástrojů. Seznam nástrojů pro web se na Android nevztahuje, detekce v aplikacích je samostatná.
- Kroky podle obrazovky. Místo CSS selektorů jde o prvky obrazovky a souřadnice, proto na orientaci záleží.
- Země. Zařízení se do zvolené země hlásí jazykem, časovým pásmem a údaji SIM. Při nahrávání a přehrání cesty skener polohu GPS nepodvrhuje.