Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Tworzenie na iOS

Pakietowanie gry na iOS jest dostępne tylko w wersji edytora Defold na Maca.

iOS wymaga, aby każda aplikacja, którą zbudujesz i chcesz uruchomić na telefonie lub tablecie, była podpisana certyfikatem wydanym przez Apple i profilem provisioningowym. Ta instrukcja opisuje kroki potrzebne do utworzenia pakietu gry na iOS. Podczas tworzenia często lepiej jest uruchamiać grę przez aplikację deweloperską, ponieważ umożliwia ona szybkie przeładowywanie zawartości i kodu bezpośrednio na urządzenie.

Proces podpisywania kodu przez Apple

Bezpieczeństwo związane z aplikacjami iOS składa się z kilku elementów. Dostęp do wymaganych narzędzi uzyskasz po zapisaniu się do Programu Apple iOS Developer. Gdy już się zarejestrujesz, przejdź do Apple Developer Member Center.

Centrum członkowskie Apple

Sekcja Certificates, Identifiers & Profiles zawiera wszystkie narzędzia, których potrzebujesz. Stąd możesz tworzyć, usuwać i edytować:

Certificates
Certyfikaty wydane przez Apple, które identyfikują Cię jako dewelopera. Możesz tworzyć certyfikaty deweloperskie lub produkcyjne. Certyfikaty deweloperskie pozwalają testować niektóre funkcje, takie jak mechanizm zakupów wewnątrz aplikacji, w środowisku testowym typu sandbox. Certyfikaty produkcyjne służą do podpisywania finalnej aplikacji przed wysłaniem do App Store. Do podpisania aplikacji przed instalacją na urządzeniu potrzebujesz certyfikatu.
Identifiers
Identyfikatory do różnych zastosowań. Można rejestrować identyfikatory wieloznacznikowe, na przykład some.prefix.*, które można używać z kilkoma aplikacjami. App ID mogą zawierać informacje o Application Services, takie jak włączenie integracji z Passbookiem, Game Center itd. Takie App ID nie mogą być identyfikatorami wieloznacznikowymi. Aby Application Services działały, bundle identifier Twojej aplikacji musi zgadzać się z identyfikatorem App ID.
Devices
Każde urządzenie deweloperskie trzeba zarejestrować, podając jego UDID (Unique Device IDentifier, zobacz niżej).
Provisioning Profiles
Profile provisioningowe powiązują certyfikaty z App ID i listą urządzeń. Określają, która aplikacja, od którego dewelopera, może znajdować się na których urządzeniach.

Podczas podpisywania gier i aplikacji w Defold potrzebujesz poprawnego certyfikatu i poprawnego profilu provisioningowego.

Niektóre rzeczy, które możesz zrobić na stronie głównej Member Center, możesz też wykonać z poziomu środowiska deweloperskiego Xcode, jeśli masz je zainstalowane.

Device identifier (UDID)
UDID urządzenia iOS można znaleźć, podłączając je do komputera przez Wi-Fi lub kabel. Otwórz Xcode i wybierz Window ▸ Devices and Simulators. Po wybraniu urządzenia wyświetlą się numer seryjny i identyfikator.

urządzenia Xcode

Jeśli nie masz zainstalowanego Xcode, identyfikator znajdziesz w iTunes. Kliknij ikonę urządzeń i wybierz swoje urządzenie.

urządzenia iTunes

  1. Na stronie Summary znajdź pole Serial Number.
  2. Kliknij Serial Number raz, aby pole zmieniło się w UDID. Jeśli będziesz klikać dalej, pojawią się kolejne informacje o urządzeniu. Klikaj, aż pojawi się UDID.
  3. Kliknij prawym przyciskiem długi ciąg UDID i wybierz Copy, aby skopiować identyfikator do schowka i łatwo wkleić go do pola UDID podczas rejestrowania urządzenia w Apple Developer Member Center.

Tworzenie przy użyciu bezpłatnego konta Apple Developer

Od Xcode 7 każdy może zainstalować Xcode i tworzyć na urządzeniu za darmo. Nie musisz rejestrować się w iOS Developer Program. Zamiast tego Xcode automatycznie wystawi certyfikat deweloperski (ważny 1 rok) oraz profil provisioningowy dla Twojej aplikacji (ważny 1 tydzień) dla konkretnego urządzenia.

  1. Podłącz urządzenie.
  2. Zainstaluj Xcode.
  3. Dodaj nowe konto do Xcode i zaloguj się przy użyciu Apple ID.
  4. Utwórz nowy projekt. Najprostsza opcja, “Single View App”, działa bez problemu.
  5. Wybierz swój “Team” (utworzony automatycznie) i nadaj aplikacji bundle identifier.

Zanotuj bundle identifier, ponieważ musisz użyć tego samego bundle identifier w projekcie Defold.

  1. Upewnij się, że Xcode utworzył dla aplikacji Provisioning Profile i Signing Certificate.

  2. Zbuduj aplikację na urządzeniu. Przy pierwszym uruchomieniu Xcode poprosi o włączenie trybu deweloperskiego i przygotuje urządzenie ze wsparciem debuggera. Może to chwilę potrwać.
  3. Gdy potwierdzisz, że aplikacja działa, znajdź ją na dysku. Lokalizację kompilacji zobaczysz w raporcie budowania w “Report Navigator”.

  4. Znajdź aplikację, kliknij ją prawym przyciskiem i wybierz Show Package Contents.

  5. Skopiuj plik “embedded.mobileprovision” w miejsce na dysku, w którym będzie łatwo go znaleźć.

Ten plik provisioningowy możesz wykorzystać razem z tożsamością podpisywania kodu, aby podpisywać aplikacje w Defold przez tydzień.

Gdy profil wygaśnie, musisz ponownie zbudować aplikację w Xcode i uzyskać nowy tymczasowy plik provisioningowy, jak opisano powyżej.

Tworzenie pakietu aplikacji iOS

Gdy masz tożsamość podpisywania kodu i profil provisioningowy, możesz utworzyć samodzielny pakiet aplikacji dla swojej gry z poziomu edytora. Po prostu wybierz Project ▸ Bundle... ▸ iOS Application... z menu.

Podpisywanie pakietu iOS

Wybierz tożsamość podpisywania kodu i wskaż plik profilu provisioningowego. Wybierz także, dla jakich architektur chcesz spakować aplikację (32-bit, 64-bit i symulator iOS) oraz wariant (Debug lub Release). Opcjonalnie możesz odznaczyć pole wyboru Sign application, aby pominąć proces podpisywania i podpisać pakiet ręcznie później.

Musisz odznaczyć pole Sign application, gdy testujesz grę na symulatorze iOS. Aplikację będzie można zainstalować, ale nie uruchomi się.

Naciśnij Create Bundle, a potem zostaniesz poproszony o wskazanie miejsca na komputerze, w którym pakiet ma zostać utworzony.

plik aplikacji ipa iOS

Ikonę aplikacji, storyboard ekranu startowego i inne ustawienia określasz w pliku ustawień projektu game.project w sekcji iOS.

Warianty budowania

Gdy tworzysz pakiet gry, musisz wybrać, którego wariantu silnika chcesz użyć. Masz trzy podstawowe opcje:

  • Debug
  • Release
  • Headless

Te różne wersje są też określane jako Build variants.

Gdy wybierzesz Project ▸ Build, zawsze otrzymasz wersję debug.

Debug

Ten typ pliku wykonywalnego jest zwykle używany podczas tworzenia gry, ponieważ zawiera kilka przydatnych funkcji debugowania:

  • Profiler - Służy do zbierania liczników wydajności i użycia. Dowiedz się, jak korzystać z profilera w podręczniku profilowania.
  • Logowanie - Silnik będzie zapisywał informacje systemowe, ostrzeżenia i błędy, gdy logowanie jest włączone. Będzie też wypisywać logi z funkcji Lua print() oraz z natywnych rozszerzeń korzystających z dmLogInfo(), dmLogError() i podobnych. Dowiedz się, jak czytać te logi w podręczniku logów gry i systemu.
  • Szybkie przeładowanie (Hot reload) - To potężna funkcja, która pozwala deweloperowi przeładowywać zasoby, gdy gra jest uruchomiona. Dowiedz się, jak z niej korzystać w instrukcji o szybkim przeładowaniu.
  • Usługi silnika (Engine services) - Można połączyć się z debugową wersją gry i komunikować się z nią przez kilka różnych otwartych portów TCP i usług. Obejmują one funkcję hot reload, zdalny dostęp do logów i wspomniany wyżej profiler, ale także inne mechanizmy zdalnej interakcji z silnikiem. Więcej informacji o usługach silnika znajdziesz w dokumentacji deweloperskiej.

Release

Ten wariant ma wyłączone funkcje debugowania. Tę opcję należy wybrać, gdy gra jest gotowa do publikacji w sklepie z aplikacjami lub udostępnienia graczom w inny sposób. Nie zaleca się wydawania gry z włączonymi funkcjami debugowania z kilku powodów:

  • Funkcje debugowania zajmują trochę miejsca w pliku binarnym, a to dobra praktyka, aby starać się utrzymać rozmiar pliku binarnego wydanej gry tak mały, jak to możliwe.
  • Funkcje debugowania zużywają też trochę czasu CPU. Może to wpłynąć na wydajność gry, jeśli użytkownik ma słabszy sprzęt. Na telefonach komórkowych zwiększone użycie CPU będzie też przyczyniać się do nagrzewania urządzenia i szybszego rozładowywania baterii.
  • Funkcje debugowania mogą ujawniać informacje o grze, które nie powinny trafić do graczy, zarówno z perspektywy bezpieczeństwa, jak i oszustw czy nadużyć.

Headless

Ten plik wykonywalny działa bez grafiki i dźwięku. Oznacza to, że możesz uruchamiać testy jednostkowe i smoke testy gry na serwerze CI, a nawet używać go jako serwera gry w chmurze.

Instalowanie i uruchamianie pakietu na podłączonym iPhonie

Zbudowany pakiet możesz zainstalować i uruchomić, używając w oknie Bundle pól wyboru edytora Install on connected device i Launch installed app:

Instalowanie i uruchamianie pakietu iOS

Do działania tej funkcji wymagane jest zainstalowane narzędzie wiersza poleceń ios-deploy. Najprościej zainstalować je przez Homebrew:

$ brew install ios-deploy

Jeśli edytor nie może wykryć lokalizacji instalacji narzędzia ios-deploy, musisz podać ją w Preferences.

Tworzenie storyboardu

Storyboard tworzysz w Xcode. Uruchom Xcode i utwórz nowy projekt. Wybierz iOS i Single View App:

Utwórz projekt

Kliknij Next i przejdź do konfiguracji projektu. Wpisz nazwę produktu:

Ustawienia projektu

Kliknij Create, aby zakończyć proces. Projekt jest już utworzony i możemy przejść do tworzenia storyboardu:

Widok projektu

Przeciągnij i upuść obraz, aby zaimportować go do projektu. Następnie wybierz Assets.xcassets i upuść obraz do Assets.xcassets:

Dodaj obraz

Otwórz LaunchScreen.storyboard i kliknij przycisk plusa (+). Wpisz “imageview” w oknie dialogowym, aby znaleźć komponent Image View.

Dodaj widok obrazu

Przeciągnij komponent Image View na storyboard:

Dodaj do storyboardu

Wybierz obraz, który wcześniej dodałeś do Assets.xcassets, z listy rozwijanej Image:

Ustaw pozycję obrazu i wprowadź inne potrzebne poprawki, na przykład dodając Label albo inny element UI. Gdy skończysz, ustaw aktywny schemat na Build -> Any iOS Device (`arm64`, `armv7`) (albo Generic iOS Device) i wybierz Product -> Build. Poczekaj, aż proces budowania się zakończy.

Jeśli w opcji “Any iOS Device (arm64)” masz tylko arm64, zmień iOS Deployment target na 10.3 w ustawieniach “Project -> Basic -> Deployment”. Dzięki temu storyboard będzie zgodny z urządzeniami armv7 (na przykład iPhone5c).

Jeśli używasz obrazów w storyboardzie, nie zostaną one automatycznie uwzględnione w LaunchScreen.storyboardc. Aby dołączyć zasoby, użyj pola Bundle Resources w game.project. Na przykład utwórz folder LaunchScreen w projekcie Defold oraz folder ios wewnątrz niego (ios jest potrzebny, aby dołączać te pliki tylko dla bundli iOS), a następnie umieść pliki w LaunchScreen/ios/. Dodaj tę ścieżkę w Bundle Resources.

Ostatnim krokiem jest skopiowanie skompilowanego pliku LaunchScreen.storyboardc do projektu Defold. Otwórz Finder w następującej lokalizacji i skopiuj plik LaunchScreen.storyboardc do projektu Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc

Użytkownik forum Sergey Lerg przygotował samouczek wideo pokazujący ten proces.

Gdy masz już plik storyboardu, możesz odwołać się do niego w game.project.

Tworzenie katalogu zasobów ikon

Wymagane od Defold 1.2.175.

Korzystanie z katalogu zasobów jest preferowanym przez Apple sposobem zarządzania ikonami aplikacji. W praktyce jest to jedyny sposób na dostarczenie ikony używanej w App Store. Katalog zasobów tworzysz tak samo jak storyboard, używając Xcode. Uruchom Xcode i utwórz nowy projekt. Wybierz iOS i Single View App:

Utwórz projekt

Kliknij Next i przejdź do konfiguracji projektu. Wpisz nazwę produktu:

Ustawienia projektu

Kliknij Create, aby zakończyć proces. Projekt jest już utworzony i możemy przejść do tworzenia katalogu zasobów:

Widok projektu

Przeciągnij i upuść obrazy do pustych pól odpowiadających różnym obsługiwanym rozmiarom ikon:

Dodaj ikony

Nie dodawaj żadnych ikon dla Notifications, Settings ani Spotlight.

Gdy skończysz, ustaw aktywny schemat na Build -> Any iOS Device (arm64) (albo Generic iOS Device) i wybierz Product -> Build. Poczekaj, aż proces budowania się zakończy.

Upewnij się, że budujesz dla Any iOS Device (arm64) albo Generic iOS Device, bo w przeciwnym razie podczas wysyłania builda pojawi się błąd ERROR ITMS-90704.

Zbuduj projekt

Ostatnim krokiem jest skopiowanie skompilowanego pliku Assets.car do projektu Defold. Otwórz Finder w następującej lokalizacji i skopiuj plik Assets.car do projektu Defold:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car

Gdy masz już plik katalogu zasobów, możesz odwołać się do niego i do ikon w game.project:

Dodaj ikonę i katalog zasobów do game.project

Ikony App Store nie muszą być odwoływane w game.project. Są automatycznie wyodrębniane z pliku Assets.car podczas wysyłania do iTunes Connect.

Instalowanie pakietu aplikacji iOS

Edytor zapisuje plik .ipa, który jest pakietem aplikacji iOS. Aby zainstalować ten plik na urządzeniu, możesz użyć jednego z poniższych narzędzi:

Możesz też użyć narzędzia wiersza poleceń xcrun simctl, aby pracować z symulatorami iOS dostępnymi przez Xcode:

# pokaż listę dostępnych urządzeń
xcrun simctl list

# uruchom symulator iPhone X
xcrun simctl boot "iPhone X"

# zainstaluj your.app na uruchomionym symulatorze
xcrun simctl install booted your.app

# uruchom symulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Manifest prywatności Apple

Manifest prywatności to plik listy właściwości, który zapisuje typy danych zbieranych przez aplikację lub SDK firm trzecich oraz używane przez nie interfejsy API wymagające podania uzasadnienia. Dla każdego typu danych zbieranego przez aplikację lub SDK firm trzecich oraz dla każdej kategorii używanego interfejsu API wymagającego podania uzasadnienia aplikacja lub SDK firm trzecich musi zapisać powody w dołączonym pliku manifestu prywatności.

Defold udostępnia domyślny manifest prywatności za pośrednictwem pola Privacy Manifest w pliku game.project. Podczas tworzenia pakietu aplikacji manifest prywatności jest scalany z manifestami prywatności w zależnościach projektu i dołączany do pakietu aplikacji.

Więcej informacji o manifestach prywatności znajdziesz w oficjalnej dokumentacji Apple.

Informacje o zgodności eksportowej

Gdy zgłaszasz grę do App Store, zostaniesz poproszony o podanie informacji o zgodności eksportowej dotyczącej użycia szyfrowania w grze. Apple wyjaśnia, dlaczego jest to wymagane:

“Gdy zgłaszasz aplikację do TestFlight lub App Store, przesyłasz ją na serwer w Stanach Zjednoczonych. Jeśli dystrybuujesz aplikację poza USA lub Kanadą, podlega ona amerykańskim przepisom eksportowym, niezależnie od miejsca rejestracji Twojej firmy. Jeśli aplikacja używa, uzyskuje dostęp do, zawiera, implementuje lub włącza szyfrowanie, jest to traktowane jako eksport oprogramowania szyfrującego, co oznacza, że aplikacja podlega wymaganiom zgodności eksportowej USA oraz wymaganiom importowym krajów, w których ją dystrybuujesz.”

Silnik Defold używa szyfrowania w następujących celach:

  • wykonywanie połączeń przez bezpieczne kanały, czyli HTTPS i SSL
  • ochrona praw autorskich kodu Lua, aby zapobiec kopiowaniu

Te zastosowania szyfrowania w silniku Defold są zwolnione z wymogu dokumentacji zgodności eksportowej na mocy prawa Stanów Zjednoczonych i Unii Europejskiej. Większość projektów Defold nadal będzie zwolniona, ale dodanie innych metod kryptograficznych może zmienić ten status. To Twoja odpowiedzialność, aby upewnić się, że Twój projekt spełnia wymagania tych przepisów i reguły App Store. Więcej informacji znajdziesz w Export Compliance Overview.

Jeśli uważasz, że Twój projekt jest zwolniony, ustaw klucz ITSAppUsesNonExemptEncryption na False w pliku Info.plist projektu. Więcej szczegółów znajdziesz w Application Manifests.

FAQ

P: Nie mogę zainstalować mojej gry Defold, korzystając z darmowego konta Apple Developer.

O: Upewnij się, że w projekcie Defold używasz tego samego identyfikatora bundla, którego użyłeś w projekcie Xcode podczas generowania profilu provisioning dla urządzeń mobilnych.

P: Jak mogę sprawdzić uprawnienia zbudowanej aplikacji?

O: Zobacz Sprawdzanie uprawnień zbudowanej aplikacji:

codesign -d --ent :- /path/to/the.app

P: Jak mogę sprawdzić uprawnienia profilu provisioning?

O: Zobacz Sprawdzanie uprawnień profilu provisioning:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision