Testování a nasazení Xamarin.iOS – Řešení potíží
Podepisování kódu a zřizování
Podepisování kódu a zřizování v iOSu může být docela nepříjemné, a proto je důležité zajistit, aby podpisové certifikáty kódu a zřizovací profily byly v pořádku.
Velké týmy by neměly používat tlačítko Opravit problém v Xcode, které je znázorněno tady:
Tím se vytvoří nové zřizovací profily a certifikáty. V nejlepším případě se vytvoří zřizovací profil pokaždé, když na něj člen týmu klikne, což způsobí neorganizaci s profily. V nejhorším případě odvolá certifikáty pro všechny ostatní ve společnosti, což způsobí, že jejich aplikace přestanou fungovat.
Udržujte přístup ke klíčence uspořádaný a odstraňte certifikáty a profily s vypršenou platností. Podnikové certifikáty trvají tři roky, zatímco ostatní trvají jenom rok. Certifikáty nelze obnovit, takže bude nutné vytvořit nové certifikáty těsně před vypršením platnosti starých certifikátů. Nezapomeňte odvolat a odstranit staré certifikáty a znovu podepisovat aplikace s novými certifikáty.
Odeberte staré zřizovací profily při instalaci nových profilů. To znamená, že Visual Studio pro Mac není v pozici, kde se musí rozhodnout, který profil se má použít. Chcete-li toho dosáhnout, nejprve nezapomeňte odstranit profil v Centru pro vývojáře Apple a pak přejděte na Předvolby > Podrobnosti zobrazení účtu > .... Vyberte zřizovací profil a klikněte na Zobrazit ve Finderu. Tím se zobrazí umístění profilu v systému souborů Mac, kde ho pak můžete odstranit pomocí Finderu.
Ujistěte se, že jsou k dispozici všechny požadované certifikáty a odpovídající privátní klíče. Pro každý tým bude potřebovat vývojářský certifikát (k instalaci aplikací na vlastní zařízení) a distribuční certifikát (pro instalaci na jiná zařízení).
Znovu spusťte Xcode a Visual Studio pro Mac / Visual Studio při instalaci nového zřizovacího profilu nebo certifikátu.
TestFlight
Někdy testování nefunguje tak hladce, jak je naplánováno. S řešením problémů s testFlightem vám můžou pomoct následující kroky:
TestFlight je dostupný jenom pro aplikace, které cílí na iOS 8 a novější.
Musí existovat distribuční profil App Storu s nárokem na beta verzi.
Okno pro odeslání nové aplikace pro iOS musí obsahovat úplně stejné informace jako info.plist aplikace a všechny oddíly musí být vyplněné. Před nahráním na TestFlight musí být pro aplikaci zadány ikony.
Když nahrajete nový build, bude trvat 1 až 5 minut, než se sestavení zobrazí v iTunes Připojení.
Pro každou verzi aplikace musí být zapnutý přepínač Testování beta verze testletu.
Každý člen vývojového týmu, který je také interním testerem, musí mít zapnutý přepínač Interní tester .
Uživatelé, kteří patří nebo vlastní jiný účet Připojení iTunes, nemůžou být interními testery. Dají se přidat jenom jako externí testeři.
Interní a externí uživatelé jsou přidáni, vybráni a pozváni samostatně. Každý seznam musí být spravován samostatně.
Apple musí schválit každé sestavení, které se bude distribuovat externím testerům. Pokud se změní verze buildu, vyžaduje se nová beta kontrola od Společnosti Apple. Pokud se číslo buildu změní, je kontrola volitelná.
Meta data musí být přidána do sestavení distribuovaných externím testerům. K tomuto nastavení se dostanete kliknutím na číslo buildu v Moje aplikace > Předběžné verze.
Ke kontrole je možné každý den odeslat pouze dva buildy. Vzhledem k tomu, že změna verze vynutí revizi, znamená to, že čísla verzí se dají změnit jenom dvakrát denně.
Automatická kopírování sad .app zpět do Windows
Při sestavování aplikací pro iOS v sadě Visual Studio a agentu sestavení pro Mac se sada .app nezkopíruje zpět na počítač s Windows. Xamarin Tools for Visual Studio 7.4 přidá novou CopyAppBundle
vlastnost, která umožňuje sestavení CI kopírovat .app sady zpět do Windows.
Pokud chcete tuto funkci použít, přidejteCopyAppBundle
tuto vlastnost do souboru .csproj ve skupině vlastností, na kterou chcete tuto funkci použít. Následující příklad například ukazuje, jak zkopírovat sadu .app zpět do počítače s Windows pro sestavení ladění, které cílí na i Telefon Simulator:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<CopyAppBundle>true</CopyAppBundle>
</PropertyGroup>