Twórz i rozpowszechniaj aplikacje na iOS bez Maca za pomocą Flutter

Opublikowany: 2019-08-23

Uwaga od redaktora: W Miquido wspieramy społeczność miłośników Fluttera i zawsze chętnie przyczyniamy się do dzielenia się wiedzą w sieci Flutter. Dziś prezentujemy gościnny artykuł autorstwa Codemagic, który poruszył temat tworzenia aplikacji na iOS z Flutterem i… bez urządzenia macOS. Ciesz się każdym kawałkiem!


W większości przypadków aplikacje na iOS są opracowywane i dystrybuowane z maszyn macOS. Trudno wyobrazić sobie tworzenie aplikacji na platformę iOS bez macOS. Jednak dzięki połączeniu Flutter i Codemagic możesz tworzyć i dystrybuować aplikacje na iOS bez korzystania z macOS. W naszym poprzednim poście wyjaśniliśmy proces podpisywania kodu aplikacji na iOS bez komputera Mac. W tym poście szczegółowo omówimy proces tworzenia aplikacji Flutter w systemie Linux i używania niestandardowego/ręcznego podpisywania kodu za pomocą Codemagic, aby mieć pełną kontrolę nad podpisywaniem aplikacji na przykładzie aplikacji Comagic-Demo.

Tworzenie aplikacji Flutter w systemie Linux

Flutter to wieloplatformowa platforma do tworzenia aplikacji mobilnych, która umożliwia tworzenie aplikacji na iOS i Androida z tego samego kodu źródłowego. Jednak natywne platformy Apple używane do tworzenia aplikacji na iOS nie mogą kompilować się na innych platformach, takich jak Linux czy Windows. Natywne komponenty iOS wymagają systemu macOS lub Darwin do tworzenia i dystrybucji aplikacji na iOS. Jednak technologie takie jak Flutter pozwalają nam tworzyć aplikacje wieloplatformowe w systemie Linux lub Windows, a następnie dystrybuować aplikacje do Google Play Store lub Apple App Store za pomocą rozwiązania Codemagic CI/CD.

Pobieranie aplikacji Flutter w systemie Linux

Aplikacje na Androida można budować, testować i publikować z platformy Linux. Możemy skorzystać z tej funkcji Androida, aby umożliwić tworzenie aplikacji Flutter w systemie Linux. Nasza aplikacja Flutter nazywa się Comagic-Demo. Użyjemy tej aplikacji, aby pokazać, jak budować na Androida i iOS w systemie Linux. Pamiętaj jednak, że możemy programować tylko na Androidzie na Linuksie, a nie na iOS. Nadal otrzymamy aplikację na iOS, którą można wdrożyć w App Store podczas tworzenia aplikacji na Androida na Linuksie. Możemy pobrać nasze Comagic-Demo na Linuksa na różne sposoby.

Kup maszynę z systemem Linux

Jeśli masz już komputer z zainstalowanym Linuksem, cały proces jest łatwy. Wystarczy zainstalować Android SDK i Flutter na komputerze z systemem Linux. Po sklonowaniu aplikacji Comagic-Demo możemy od razu zacząć nad nią pracować.

Twórz kontenery Docker

Innym sposobem na uzyskanie aplikacji Flutter w systemie Linux jest użycie Dockera. Jeśli znasz ekosystem platformy Docker, możesz utworzyć plik Docker , który ma zainstalowane Android SDK i Flutter. Na Dockerhub jest wiele plików Docker dla Androida, wystarczy rozszerzyć te obrazy za pomocą Flutter SDK. Utwórzmy tutaj prosty plik Dockerfile rozszerzający przykładowy obraz platformy dokującej systemu Android, aby pobrać środowisko systemu Android i Flutter do kontenera platformy Docker. Plik Dockerfile powinien skopiować aplikację do kontenera i uruchomić środowisko Flutter Android. Przykładowy plik Dockerfile dla Comagic-Demo będzie wyglądał tak:

 Z runmymind/docker-android-sdk
URUCHOM mkdir /codemagic-demo
WORKDIR /codemagic-demo
DODAJ . /codemagic-demo
URUCHOM aktualizację apt-get && \
    apt-get install -y lcov git-core curl rozpakuj && \
    klon git https://github.com/flutter/flutter.git && \
    / trzepotanie/kosz/lekarz trzepotania && \
    apt-get remove -y curl rozpakuj && \
    trafne autousuwanie -y && \
    rm -rf /var/lib/apt/lists/*
ŚCIEŻKA ŚRODOWISKA $ PATH:/trzepotanie/kosz/pamięć podręczna/dart-sdk/bin:/trzepotanie/kosz
URUCHOM trzepotanie lekarza

Ten fragment kodu służy tylko do celów ilustracyjnych, ale możesz dostosować plik Dockerfile zgodnie z własnymi potrzebami. Po zainstalowaniu plików Dockerfile i Docker możesz pobrać aplikację Codemagic za pomocą Dockera.

 $ docker build -t codemagic-demo .
$ docker run --name codemagic-demo

Po uruchomieniu tych poleceń kontener Dockera będzie działał ze środowiskiem Flutter.

Dokeryzacja aplikacji Futter będzie innym tematem i omówimy go szczegółowo w przyszłym poście.

Generowanie zasobów do podpisywania kodu z App Store Connect

Aby kodować podpisywanie aplikacji na iOS, potrzebujesz konta programisty Apple, certyfikatu deweloperskiego i dystrybucyjnego, identyfikatora aplikacji i profili aprowizacji utworzonych dla aplikacji. O szczegółach czynności związanych z podpisywaniem kodu opisaliśmy w poprzednim poście. Aby skonfigurować ręczne podpisywanie kodu dla kompilacji deweloperskich lub debugowania aplikacji na iOS w Codemagic, potrzebujemy następujących rzeczy:

  • Certyfikat rozwoju lub dystrybucji w formacie .P12
  • Profil aprowizacji pobrano z App Store Connect lub portalu Apple Developer
  • Identyfikator pakietu aplikacji na iOS

Zarówno certyfikat, jak i profile aprowizacji możemy pobrać z sekcji Certyfikaty, Identyfikatory i Profile w portalu Apple Developer. w

Pobierz profile aprowizacji z portalu dla programistów iOS

Podobnie możemy pobrać profile aprowizacji z portalu dla programistów Apple.

Profile udostępniania iOS

Potrzebujemy zarówno certyfikatu, jak i profilu aprowizacji, aby kodem podpisać naszą aplikację na iOS w Codemagic, więc zapisz te pliki do późniejszego wykorzystania.

Aktualizowanie plików projektu Xcode

Teraz mamy wszystkie zasoby do podpisywania kodu z portalu Apple Developer. Następnie musimy uporządkować plik projektu Xcode, aby użyć ręcznego podpisywania kodu z odpowiednim zespołem i profilem aprowizacji. Możemy to zrobić za pomocą skryptu Ruby za pomocą Xcodeproj Gem lub możemy po prostu zmienić następujące pola w pliku i os/TWOJA_APP.xcodeproj/project.pbxproj .

  • Zespół programistów = IDENTYFIKATOR_ZESPÓŁU_ROZWOJU
  • ProvisioningStyle = Ręczny
  • PROVISIONING_PROFILE_SPECIFIER = NAZWA_TWOJEGO_PROVISIONING_PROFILE

W naszej aplikacji Codemagic-Demo musimy edytować plik projektu Xcode tutaj na GitHub. Musimy upewnić się, że te zmiany zostały wprowadzone w konfiguracji debugowania dla kompilacji wewnętrznych oraz w konfiguracji wydania dla kompilacji App Store. Po ustawieniu wartości w project.pbxproj jesteśmy gotowi do wdrożenia aplikacji na iOS z Codemagic bez żadnych problemów.

Konfigurowanie ręcznego podpisywania kodu w Codemagic

Podczas programowania w systemie Linux widzimy tylko stan aplikacji na Androida, ponieważ narzędzi Xcode i iOS nie można zainstalować ani uruchomić w systemie Linux. Trwają prace nad wprowadzeniem narzędzi Swift i iOS w systemie Linux, ale zajmie to dużo czasu. Gdy jesteśmy gotowi do dystrybucji aplikacji, możemy łatwo skonfigurować CI/CD dla aplikacji za pomocą Codemagic, zobacz Przewodnik wprowadzający tutaj. OnCodemagic możemy włączyć podpisywanie kodu iOS z sekcji Publikuj, przesyłając certyfikat i profil aprowizacji, które pobraliśmy z portalu Apple Developer. W aplikacji Codemagic przejdź do Ustawienia → Publikuj → Podpisywanie kodu iOS → Ręczne i prześlij tam swój certyfikat i profil aprowizacji.

Konfigurowanie ręcznego podpisywania kodu w Codemagic

Po uruchomieniu kompilacji otrzymasz aplikację na iOS w postaci pliku IPA, który można wdrożyć na udostępnionych urządzeniach. Lista artefaktów kompilacji w Codemagic będzie wyglądać tak:

Lista artefaktów kompilacji w Codemagic

Jak widać w sekcji Artefakty , otrzymaliśmy codemagic_demo.ipa oraz pliki dSYMs do raportów o awariach. Możemy zainstalować tę aplikację na dowolnym urządzeniu iOS, które zostało dodane do profilu aprowizacji i przetestować naszą aplikację na iOS. Jeśli zobaczymy tam jakieś błędy, zawsze możemy wrócić do środowiska Linux i naprawić te błędy.

Dystrybucja aplikacji na iOS w App Store

W tej chwili stworzyliśmy wersję debugowania aplikacji na iOS do testów wewnętrznych. W podobny sposób możemy dystrybuować aplikację na iOS do App Store. Gdy jesteśmy gotowi do wdrożenia aplikacji w App Store, musimy zbudować aplikację w trybie wydania . Możemy to zrobić za pomocą certyfikatu dystrybucji i profilu dostarczania produkcji. W podobny sposób możemy wygenerować certyfikat i profile. Ale musimy upewnić się, że podczas tworzenia profilu aprowizacji wybraliśmy dystrybucję App Store .

Opcja dystrybucji w App Store

Dystrybucyjny profil aprowizacji uruchomi aplikację iOS na dowolnym urządzeniu i nie musimy jawnie dodawać urządzeń w profilu aprowizacji. Profil aprowizacji App Store będzie wyglądał tak:

Profil administracyjny App Store

Gdy mamy już pod ręką certyfikat dystrybucji iOS i profil Provisioningu produkcyjnego , możemy wybrać tryb Release w Sekcja kompilacji w Codemagic, jak pokazano poniżej.

Tryb wydania w sekcji Kompilacja w Codemagic

Ustawiliśmy również argumenty kompilacji na release zamiast debugowania. W sekcji Publikuj musimy przesłać certyfikat dystrybucji i profil aprowizacji produkcyjnej, aby wygenerować wersję aplikacji w App Store.

Gdy Codemagic wygeneruje artefakty kompilacji, możemy wykonać kompilację do App Store Connect, wcześniej znanego jako iTunesConnect, zgodnie z wytycznymi App Store i przesłać aplikację do sprawdzenia.

Wniosek

Dzięki połączeniu międzyplatformowego frameworka do tworzenia aplikacji mobilnych i magicznego rozwiązania CI/CD, takiego jak Codemagic, posiadanie komputera Mac do tworzenia aplikacji na iOS wcale nie jest obowiązkowe. Mogą wystąpić pewne problemy z debugowaniem aplikacji podczas programowania na iOS, ale jest całkowicie możliwe tworzenie i publikowanie aplikacji iOS w App Store przy użyciu kombinacji Flutter i Codemagic.

Ikona aplikacji natywnych

Chcesz zbudować przyszłościową aplikację dla swojej firmy?

Popracujmy razem