V tomto článku sdílíme zkušenosti se sestavováním a dodáváním iOS aplikací uživatelům, které studio Plarium Krasnodar nashromáždilo v procesu ladění CI/CD.
Trénink
Každý člověk, který se tak či onak zabývá vývojem aplikací pro zařízení Apple, již ocenil kontroverzní pohodlí infrastruktury. Potíže se vyskytují všude: od nabídky profilu vývojáře po nástroje pro ladění a sestavení.
Na internetu je spousta článků o „základech“, takže se pokusíme zdůraznit to hlavní. Zde je to, co potřebujete k úspěšnému vytvoření aplikace:
vytvořená aplikace s unikátní ID (je třeba upozornit na důležitost Bundle Identifier, protože použití zástupného ID znemožňuje použití mnoha funkcí aplikace, např.: Associated Domains, Push Notifications, Apple Sign In a další);
Certifikát vývojáře musí být vygenerován prostřednictvím Keychain na jakémkoli zařízení macOS. Typ certifikátu je velmi důležitý. V závislosti na aplikačním prostředí (Vývoj, QA, Staging, Výroba) se bude lišit (Vývoj nebo Distribuce), stejně jako typ profilu podpisu aplikace.
Hlavní typy profilů:
Development - určeno k podepisování aplikace vývojového týmu, používá se Vývojový certifikát (název typu iPhone Developer: XXXXX);
Ad Hoc - určeno k podpisu testovací aplikace a internímu ověření oddělením QA, používá se Distribuční certifikát vývojáře (název typu iPhone Distribuce: XXXXX);
App Store - release build pro externí testování přes TestFlight a nahrání do App Store, používá se Distribuční certifikát vývojáře.
Při generování profilů Development a Ad Hoc je to také uvedeno seznam zařízení, na který si můžete nainstalovat sestavení, které umožňuje dále omezit přístup pro uživatele. V profilu App Store není žádný seznam zařízení, protože řízení přístupu během uzavřeného beta testování má na starosti TestFlight, o kterém bude řeč později.
Pro přehlednost můžete profil vývojáře prezentovat ve formě tabulky níže. Snáze tak pochopíme, jaké parametry k montáži potřebujeme a odkud je získat.
shromáždění
Abychom usnadnili oddělení sestav podle projektu a prostředí, používáme názvy profilů jako ${ProjectName}_${Instance}, tedy název projektu + instance (závisí na prostředí aplikace: Dev, QA, GD, Staging, Live a tak dále).
Při importu na server sestavení změní profil svůj název na jedinečné ID a přesune se do složky /Users/$Username/Library/MobileDevice/Provisioning Profiles (Kde $Username odpovídá názvu uživatelského účtu sestavení serveru).
Existují dva způsoby, jak vytvořit soubor *.ipa – starší (PackageApplication) a moderní (prostřednictvím vytvoření a exportu XcAchive). První metoda je považována za zastaralou, protože od verze 8.3 byl modul balení souborů aplikace odstraněn z distribuce Xcode. Chcete-li jej použít, musíte zkopírovat modul ze starého Xcode (verze 8.2 a starší) do složky: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method — způsob doručení, odpovídá typu podpisového profilu aplikace, to znamená, že pro Vývoj bude hodnota vývoj, pro Ad Hoc - ad-hoc a pro App Store - app-store.
$BundleID — ID aplikace, které je zadáno v nastavení aplikace. Můžete zkontrolovat pomocí příkazu:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — nastavení jména vývojáře a ID profilu podpisu, která byla použita dříve a musí odpovídat hodnotám v nastavení exportu.
$TeamID — desetimístné ID v hranatých závorkách za jménem vývojáře, příklad: iPhone Developer: …… (XXXXXXXXXX); lze zkontrolovat v Keychain.
Dále pomocí příkazu export získáme potřebný soubor *.ipa:
Nyní je třeba shromážděný soubor doručit koncovému uživateli, to znamená nainstalovat na zařízení.
Existuje mnoho služeb pro distribuci Development a Ad Hoc sestavení, jako je HockeyApp, AppBlade a další, ale v tomto článku budeme hovořit o samostatném serveru pro distribuci aplikací.
Instalace aplikace pro iOS probíhá ve 2 fázích:
Příjem instalačního manifestu aplikace prostřednictvím služby Items Service.
Instalace souboru *.ipa podle informací uvedených v manifestu přes HTTPS.
Nejprve tedy musíme vygenerovat instalační manifest (typ souboru *.plist) příkazem:
Jak vidíte, manifest obsahuje téměř všechny parametry, které se podílejí na sestavování aplikace.
Verze aplikace ($AppVersion) lze zkontrolovat příkazem:
defaults read $ProjectDir/Info CFBundleVersion
Parametr $ipaUrl obsahuje přímý odkaz na stažení souboru *.ipa. Od sedmé verze iOS je nutné aplikaci instalovat přes HTTPS. V osmé verzi se mírně změnil formát manifestu: bloky s nastavením ikon aplikací jako
<images>
<image>...</image>
</images>
K instalaci aplikace tedy stačí jednoduchá HTML stránka s tímto odkazem:
Pro potřeby vývojového a testovacího oddělení vytvořilo Plarium vlastní instalační instalační aplikaci, která nám poskytuje:
samostatnost a nezávislost,
centralizace řízení přístupu a bezpečná instalace aplikací prostřednictvím „dočasných“ dynamicky vytvářených odkazů,
rozšiřitelná funkcionalita (to znamená, že vývojový tým může v případě potřeby integrovat chybějící funkce do existující aplikace).
Testování
Nyní budeme hovořit o předběžném testování aplikace pomocí TestFlight.
Požadované podmínky pro stažení jsou typ podpisového profilu App Store a přítomnost vygenerovaných API klíčů.
Aplikaci lze stáhnout několika způsoby:
přes Xcode (Organizer),
přes altool,
přes Application Loader pro starší verze Xcode (nyní Transporter).
Pro automatické stahování se používá altool, který má také dvě autorizační metody:
Heslo pro konkrétní aplikaci,
Klíč API.
Je vhodnější stáhnout aplikaci pomocí klíče API.
Chcete-li získat klíč API, přejděte na odkaz a vygenerovat klíč. Kromě samotného klíče ve formátu *.p8 budeme potřebovat dva parametry: IssuerID a KeyID.
Kde apiKey и apiIssuer mít hodnoty polí ze stránky generování klíče API.
Dále po úspěšné validaci načteme aplikaci příkazem --upload-app se stejnými parametry.
Aplikace bude společností Apple testována během jednoho nebo dvou dnů a poté bude k dispozici externím testerům: e-mailem jim budou zaslány odkazy k instalaci.
Dalším způsobem, jak stáhnout aplikaci prostřednictvím altool, je použití hesla pro konkrétní aplikaci.
Chcete-li získat heslo pro konkrétní aplikaci, musíte přejít na adresu odkaz a vygenerujte jej v sekci Zabezpečení.
Dále byste měli vytvořit záznam sestavení serveru v Keychain s tímto heslem. Od verze 11 Xcode to lze provést příkazem:
Jako hodnota parametru -p můžete vzít hodnotu $AppPswd v nezašifrované (explicitní) podobě.
Jak však již bylo zmíněno, z hlediska výkonu je pro autorizaci altoolu lepší zvolit API Key, protože různé verze Xcode mají určité problémy („nevidí“ Keychain, chyby autorizace při nahrávání atd.).
To je vlastně všechno. Přeji všem zúčastněným úspěšné sestavení a bezproblémové vydání v App Store.