Reagovat Nativní: Jak publikovat aplikaci Expo k TestFlight + Ladit běžné chyby

Od Jeffa Lewise

Máte aplikaci React Native Expo? Chcete publikovat na TestFlight pro testování? Pak je tato příručka pro vás.

Poznámka: Tato příručka předpokládá, že máte účet vývojáře Apple a také nainstalovali Expo CLI prostřednictvím NPM. Aby to fungovalo, budete potřebovat obojí.

1. Příprava projektu na sestavení

A. App.json

V kořenové složce projektu by již měl být soubor app.json.

Poznámka: Ochrana osobních údajů může být uvedena jako „veřejná“, „soukromá“ nebo „neuvedená“.

{
  "expo": {
    "name": "YOUR_NAME_HERE",
    "slug": "YOUR_SLUG_HERE",
    "privacy": "neuvedeno",
    "sdkVersion": "32.0.0",
    "platformy": [
       "ios",
       "android"
     ],
     "version": "1.0.0",
     "orientace": "portrét",
     "ikona": "./assets/icon.png",
       "splash": {
         "image": "./assets/splash.png",
         "resizeMode": "obsahovat",
         "backgroundColor": "#ffffff"
       },
     "aktualizace": {
       "fallbackToCacheTimeout": 0
     },
     "assetBundlePatterns": [
       "** / *"
     ],
     "ios": {
       "supportTablet": true,
       "bundleIdentifier": "YOUR_BUNDLE_IDENTIFIER_HERE"
     }
   }
}

B. Přidat ikonu aplikace

Pokud pro váš projekt není přidána ikona, zobrazí se vám následující chyba:

Ikona aplikace nemůže mít průhlednost, pokud chcete aplikaci nahrát do Apple Store.

Chcete-li to vyřešit, budete muset vytvořit ikonu 1024x1024 v aplikaci Photoshop, Illustrator, Affinity atd. Ideální velikost ikony je 1024x1024 a když sestavíme aplikaci, Expo vygeneruje potřebné menší velikosti ikon.

Nyní, když máte připravenou ikonu 1024x1024, přidáme ji do složky aktiv a opravíme cestu ikony v aplikaci app.json.

"ikona": "./assets/icon.png",

C. Bundle Identifier (vývojář Apple)

Vaše aplikace React Native Expo bude nakonec potřebovat identifikátor balíčku.

Poznámka: Jak již bylo uvedeno výše, tato příručka předpokládá, že máte účet vývojáře Apple. Bez něj nebudete moci vytvořit identifikátor balíčku. Pokud váš projekt chybí identifikátor svazku, zobrazí se následující chyba:

Ve vašem projektu musí být v aplikaci app.json nastaven bundleIdentifier.

Chcete-li to vyřešit, přejděte na a klepněte na Certifikáty, identifikátory a profily.

Poté klikněte na ID aplikace.

Klikněte na tlačítko +.

Poté vyberte příponu ID aplikace. Doporučená přípona je com.domainname.appname

D. Identifikátor balíčku (projekt)

Nyní, když byl identifikátor Bundler vytvořen prostřednictvím vašeho účtu Apple Developer, budete ho muset přidat do svého souboru app.json.

"ios": {
  "supportTablet": true,
  "bundleIdentifier": "YOUR_BUNDLE_IDENTIFIER_HERE"
}

2. Sestavení aplikace (.IPA)

A. Sestavte příkaz

Naše aplikace je nyní připravena k vytvoření souboru iOS IPA pomocí Expo. Začneme spuštěním následujícího příkazu:

expo build: ios

B. Pověření vývojáře společnosti Apple + Optimalizace obrázků

V terminálu budete požádáni o přihlášení pomocí přihlašovacích údajů Apple Developer.

Poté budete vyzváni k vytvoření pověření a / nebo optimalizaci obrázků. Nechal jsem tyto výchozí hodnoty a nechal je generovat přihlašovací údaje a optimalizovat obrázky.

Sestavení aplikace React Native Expo je nyní dokončeno a je ve formátu IPA.

C. Stáhnout sestavení aplikace (.IPA)

Jakmile aplikace dokončí stavbu, měla by se zobrazit následující zpráva. S touto adresou URL si můžeme stáhnout naši sestavenou aplikaci (.ipa).

✔ Sestavení dokončeno.
Samostatná aplikace byla úspěšně vytvořena: YOUR_APP_URL

3. Přidejte Expo Build do Xcode

A. Aplikační zavaděč (Xcode)

V Xcode vyberte nabídku Xcode, vyberte možnost Otevřít nástroj pro vývojáře a vyberte Application Loader. Zde můžete importovat a nahrát váš soubor .ipa do iTunesConnect.

Po spuštění zavaděče aplikací budete požádáni o zadání hesla Apple ID +. Toto však není vaše běžné heslo k účtu iCloud / vývojář. Budete muset vygenerovat heslo pro konkrétní aplikaci, jinak dostanete následující chybu:

Přihlaste se pomocí hesla pro konkrétní aplikaci, které jste vygenerovali. Pokud jste zapomněli heslo pro konkrétní aplikaci nebo potřebujete vytvořit nové heslo, přejděte na adresu appleid.apple.com

B. Vygenerujte heslo pro konkrétní aplikaci (Apple ID)

Prostřednictvím Apple ID můžete vygenerovat heslo pro konkrétní aplikaci, zadat své přihlašovací údaje a kliknout na Generovat heslo.

Poté budete požádáni o vytvoření hesla (přezdívka) a vygenerováno heslo pro konkrétní aplikaci.

C. Přidat ID balíčku (App Store Connect)

Pokud nemáte nastavení Bundle ID v App Store connect, zobrazí se následující chyba:

Nebyly nalezeny žádné vhodné aplikační záznamy. Ověřte správnost vašeho identifikátoru balíčku „YOUR_BUNDLE_PROFILER_HERE“.

Chcete-li tento problém vyřešit, budete muset přejít na App Store Connect, kde budete znovu vyzváni k zadání uživatelského jména a hesla Apple ID (nikoli pro konkrétní heslo aplikace).

Klikněte na Moje aplikace.

Klikněte na znaménko + a vytvořte novou aplikaci.

Nyní budete muset zadat následující informace a přidat správný ID balíčku.

D. Doručení aplikace (Xcode)

Nyní můžete vzít svůj nově vytvořený soubor .ipa, vybrat jej z aplikace Xcode Application Loader a zadat své Apple ID a heslo pro konkrétní aplikaci.

4. Odeslat pozvánku na TestFlight (App Store Connect)

V aplikaci App Store Connect klikněte na svou aplikaci a přejděte na kartu TestFlight.

Zvolte, zda chcete přidat externí testery nebo interní testery kliknutím na postranním panelu.

Chcete-li přidat tester, klikněte na znaménko + a zadejte informace o testerech a e-mailovou adresu.

Poznámka: E-mail trval dlouho, než jsem jej obdržel (hodiny). Strávil jsem docela dost času na Stack Overflow se snaží přijít na to, co se stalo s mým projektem, ale trvalo to opravdu dlouho.

A to je vše! Pozvánka k testování aplikace bude brzy (může to trvat hodiny) zaslána testerům, aby aplikaci uplatnili.

5. Další běžné chyby Expo a Xcode

A. Chyba Expo:

Nelze zahájit nové sestavení, protože již probíhá vytváření.

Přejděte na https://expo.io/builds, zadejte přihlašovací údaje a zrušte probíhající sestavení.

B. Chyba Expo:

připojit ECONNREFUSED 127.0.0.1:19001

Do terminálu zadejte expo start a expo build: ios.

C. Expo Error:

Nebyly nalezeny žádné vhodné aplikační záznamy. Ověřte správnost vašeho identifikátoru balíčku „YOUR_BUNDLE_PROFILER_HERE“.

Tato chyba je vyřešena v části 3. Přidat Expo Build do Xcode, část C. Přidat Bundle ID (App Store Connect).

D. Expo chyba

Důvod: K dispozici není žádný certifikát, který by poskytoval profil poskytování, surový: „Ujistěte se, že jste mohli před tímto krokem vytvořit certifikát.“

E. Chyba Expo

Missing Push Notification Entitlement - Zdá se, že se vaše aplikace registruje ve službě Apple Push Notification, ale oprávnění k podpisu aplikace nezahrnují oprávnění „aps-environment“. Pokud vaše aplikace používá službu Apple Push Notification, ujistěte se, že vaše ID aplikace je povoleno pro Push Notification na portálu Provisioning Portal, a po podepsání aplikace znovu odešlete profil s profilem distribuce, který obsahuje oprávnění „prostředí aps“.

Chcete-li to vyřešit, budete muset spustit následující příkaz k vytvoření nové verze.

Poznámka: Pokud se jedná o vaše druhé sestavení a odeslání aplikace do Apple for TestFlight, budete muset aktualizovat verzi v app.json.

expo build: ios --clear-provisioning-profile

F. Expo Error

Bylo nalezeno více profilů s názvem 'com.appName.appName AppStore'. Odstraňte duplicitní profily a zkuste to znovu. “

Chcete-li to vyřešit, odeberte / zrušte všechny existující profily klíčů a provizí v účtu vývojáře Apple.

Poté znovu spusťte sestavení: ios - clear-provisioning-profile a nechte Expo generovat všechny potřebné soubory při vytváření .ipa.

G. Chyba Xcode (App.json)

ERROR ITMS-90189: „Redundantní binární nahrávání. Již jste nahráli sestavení s číslem sestavení„ 1 “pro číslo verze„ 1.0.0 “. Před nahráním aplikace do obchodu App Store Connect zvětšete řetězec sestavení. více v nápovědě Xcode (http://help.apple.com/xcode/mac/current/#/devba7f53ad4). "

Chcete-li tento problém vyřešit, přejděte do souboru app.json a zvyšte číslo verze, například následující:

"version": "1.0.1",