Udostępnij za pośrednictwem


Tworzenie aplikacji OpenGL ES w systemach Android i iOS

Możesz tworzyć rozwiązania i projekty programu Visual Studio dla aplikacji systemu iOS i aplikacji systemu Android, które współużytkować wspólny kod. Ten artykuł przeprowadzi Cię przez połączony szablon rozwiązania. Tworzy zarówno aplikację systemu iOS, jak i aplikację Android Native Activity. Aplikacje mają wspólny kod C++, który używa biblioteki OpenGL ES do wyświetlania tego samego animowanego modułu rotującego na każdej platformie. OpenGL ES (OpenGL for Embedded Systems lub GLES) to interfejs API grafiki 2D i 3D. Jest ona obsługiwana na wielu urządzeniach przenośnych.

Wymagania

Ważne

Obsługa języka OpenGL nie jest już dostępna. Była ona ostatnio dostępna w programie Visual Studio 17.3.

Poniżej przedstawiono wymagania systemowe dotyczące tworzenia aplikacji OpenGL ES dla systemów iOS i Android. Jeśli jeszcze tego nie zrobiono, zainstaluj pakiet roboczy Programowanie mobilne za pomocą języka C++ w Instalator programu Visual Studio. Aby pobrać szablony OpenGL ES i skompilować je dla systemu iOS, dołącz opcjonalne narzędzia programistyczne języka C++ dla systemu iOS. Aby utworzyć oprogramowanie dla systemu Android, zainstaluj narzędzia programistyczne dla systemu Android w języku C++ i wymagane narzędzia innych firm: Android NDK, Apache Ant i Google Android Emulator.

Aby uzyskać lepszą wydajność emulatora na platformach Intel, jedną z opcji jest zainstalowanie Menedżera przyspieszonego wykonywania sprzętu Intel (HAXM). Aby uzyskać szczegółowe instrukcje, zobacz Instalowanie międzyplatformowego tworzenia aplikacji mobilnych za pomocą języka C++.

Aby skompilować i przetestować aplikację systemu iOS, potrzebny jest komputer Mac. Skonfiguruj ją zgodnie z instrukcjami instalacji. Aby uzyskać więcej informacji na temat konfigurowania programowania dla systemu iOS, zobacz Instalowanie i konfigurowanie narzędzi do kompilowania przy użyciu systemu iOS.

Tworzenie nowego projektu aplikacji OpenGLES

W tym samouczku najpierw utworzysz nowy projekt aplikacji OpenGL ES. a następnie skompiluj i uruchom domyślną aplikację w emulatorze systemu Android. Następnie skompilujesz aplikację dla systemu iOS i uruchomisz aplikację na urządzeniu z systemem iOS.

  1. W programie Visual Studio wybierz pozycję Plik>nowy>projekt.

  2. W oknie dialogowym Nowy projekt w obszarze Szablony wybierz pozycję Visual C++>Cross Platform, a następnie wybierz szablon Aplikacja OpenGLES (Android, iOS).

  3. Nadaj aplikacji nazwę, taką jak MyOpenGLESApp, a następnie wybierz przycisk OK.

    Screenshot of the New Project dialog where the OpenGLES Application project template is selected, with MyOpenGLESApp in the Name textbox.

    Program Visual Studio tworzy nowe rozwiązanie i otwiera Eksplorator rozwiązań.

    Screenshot of MyOpenGLESApp in Solution Explorer.

  1. W programie Visual Studio wybierz pozycję Plik>nowy>projekt.

  2. W oknie dialogowym Tworzenie nowego projektu wybierz szablon Aplikacja OpenGLES (Android, iOS), a następnie wybierz przycisk Dalej.

  3. W oknie dialogowym Konfigurowanie nowego projektu wprowadź nazwę, taką jak MyOpenGLESApp w polu Nazwa projektu, a następnie wybierz pozycję Utwórz.

    Program Visual Studio tworzy nowe rozwiązanie i otwiera Eksplorator rozwiązań.

    Screenshot of MyOpenGLESApp in Solution Explorer.

Nowe rozwiązanie aplikacji OpenGL ES zawiera trzy projekty bibliotek i dwa projekty aplikacji. Folder Libraries zawiera udostępniony projekt kodu. Dwa projekty specyficzne dla platformy odwołujące się do kodu udostępnionego:

  • MyOpenGLESApp.Android.NativeActivity zawiera odwołania i przyklej kod, który implementuje aplikację jako działanie natywne w systemie Android. Punkty wejścia z kodu kleju są implementowane w pliku main.cpp, który zawiera wspólny udostępniony kod w pliku MyOpenGLESApp.Shared. Prekompilowane nagłówki znajdują się w pliku pch.h. Ten projekt aplikacji działania natywnego jest kompilowany w pliku biblioteki udostępnionej (so), który jest pobierany przez MyOpenGLESApp.Android.Packaging projekt.

  • MyOpenGLESApp.iOS.StaticLibrary Tworzy plik biblioteki statycznej systemu iOS (a), który zawiera udostępniony kod w pliku MyOpenGLESApp.Shared. Jest ona połączona z aplikacją utworzoną MyOpenGLESApp.iOS.Application przez projekt.

  • MyOpenGLESApp.Shared zawiera udostępniony kod, który działa na różnych platformach. Używa makr preprocesora do warunkowej kompilacji kodu specyficznego dla platformy. Kod udostępniony jest pobierany przez odwołanie do projektu w elementach MyOpenGLESApp.Android.NativeActivity i MyOpenGLESApp.iOS.StaticLibrary.

Rozwiązanie ma dwa projekty do kompilowania aplikacji dla platform Android i iOS:

  • MyOpenGLESApp.Android.PackagingTworzy plik apk do wdrożenia na urządzeniu z systemem Android lub emulatorze. Ten plik zawiera zasoby i plik AndroidManifest.xml, w którym ustawiasz właściwości manifestu. Zawiera również plik build.xml , który kontroluje proces kompilacji Ant. Jest on domyślnie ustawiany jako projekt startowy, dzięki czemu można go wdrożyć i uruchomić bezpośrednio z poziomu programu Visual Studio.

  • MyOpenGLESApp.iOS.Application zawiera zasoby i kod kleju Objective-C, aby utworzyć aplikację systemu iOS, która łączy się z kodem biblioteki statycznej języka C++ w programie MyOpenGLESApp.iOS.StaticLibrary. Ten projekt tworzy pakiet kompilacji, który jest przenoszony na komputer Mac przez program Visual Studio i agenta zdalnego. Podczas kompilowania tego projektu program Visual Studio wysyła pliki i polecenia, aby skompilować i wdrożyć aplikację na komputerze Mac.

Kompilowanie i uruchamianie aplikacji systemu Android

Rozwiązanie utworzone przez szablon ustawia aplikację systemu Android jako projekt domyślny. Możesz skompilować i uruchomić tę aplikację, aby zweryfikować instalację i konfigurację. W przypadku testu początkowego uruchom aplikację na jednym z profilów urządzeń zainstalowanych przez emulator dla systemu Android. Jeśli wolisz przetestować aplikację na innym obiekcie docelowym, możesz załadować emulator docelowy. Możesz też połączyć urządzenie z komputerem.

Aby skompilować i uruchomić aplikację Działania natywne dla systemu Android

  1. Jeśli nie została jeszcze wybrana, wybierz pozycję x86 z listy rozwijanej Platformy rozwiązań.

    Screenshot of the Solution Platform dropdown with x86 highlighted.

    Użyj x86, aby zastosować emulator. Aby wskazać urządzenie docelowe, wybierz platformę rozwiązania na podstawie procesora urządzenia. Jeśli lista Platformy rozwiązań nie jest wyświetlana, wybierz pozycję Platformy rozwiązań z listy Dodaj/Usuń przyciski, a następnie wybierz platformę.

  2. W Eksplorator rozwiązań otwórz menu skrótów dla MyOpenGLESApp.Android.Packaging projektu, a następnie wybierz pozycję Kompiluj.

    Screenshot of the Solution Explorer window with the shortcut menu for the Android Packaging Project showing the Build command.

    W oknie Dane wyjściowe zostaną wyświetlone dane wyjściowe procesu kompilacji dla udostępnionej biblioteki systemu Android i aplikacji systemu Android.

    Screenshot of Build Output for Android projects.

  3. Wybierz jeden z emulowanych profilów urządzeń z systemem Android jako cel wdrożenia.

    Choose deployment target.

    Być może zainstalowano inne emulatory lub połączono urządzenie z systemem Android. Można je wybrać na liście rozwijanej docelowy wdrożenia. Aby uruchomić aplikację, utworzona platforma rozwiązania musi być zgodna z platformą urządzenia docelowego.

  4. Naciśnij klawisz F5 , aby rozpocząć debugowanie, lub Shift+F5 , aby rozpocząć bez debugowania.

    Program Visual Studio uruchamia emulator, który trwa kilka sekund, aby załadować i wdrożyć kod. Poniżej przedstawiono sposób wyświetlania aplikacji w emulatorze:

    Screenshot of the app running in an Android Emulator.

    Po uruchomieniu aplikacji możesz ustawić punkty przerwania i użyć debugera do przechodzenia przez kod, sprawdzania ustawień lokalnych i obserwowania wartości.

  5. Naciśnij klawisze Shift+F5, aby zatrzymać debugowanie.

    Emulator to oddzielny proces, który nadal działa. Możesz edytować, kompilować i wdrażać kod wiele razy w tym samym emulatorze. Aplikacja jest wyświetlana w kolekcji aplikacji w emulatorze i można ją uruchomić bezpośrednio z tego miejsca.

    Wygenerowane projekty aplikacji Android Native Activity i biblioteki umieszczają udostępniony kod C++ w bibliotece dynamicznej. Zawiera on kod "przyklej" do interfejsu z platformą Android. Większość kodu aplikacji znajduje się w bibliotece. Manifest, zasoby i instrukcje kompilacji znajdują się w projekcie tworzenia pakietów. Kod udostępniony jest wywoływany z pliku main.cpp w projekcie NativeActivity. Aby uzyskać więcej informacji na temat programowania działania natywnego systemu Android, zobacz stronę Pojęcia NDK dla deweloperów systemu Android.

    Program Visual Studio kompiluje projekty działania natywnego systemu Android przy użyciu zestawu NDK systemu Android. Używa języka Clang jako zestawu narzędzi platformy. Program Visual Studio mapuje właściwości projektu na polecenia kompilowania, łączenia i debugowania na platformie docelowej. Aby uzyskać szczegółowe informacje, otwórz okno dialogowe Strony właściwości dla projektu MyOpenGLESApp.Android.NativeActivity. Aby uzyskać więcej informacji na temat przełączników wiersza polecenia, zobacz Podręcznik użytkownika kompilatora języka Clang.

Kompilowanie i uruchamianie aplikacji systemu iOS na urządzeniu z systemem iOS

Projekt aplikacji systemu iOS można utworzyć i edytować w programie Visual Studio. Ze względu na ograniczenia licencjonowania należy go skompilować i wdrożyć z komputera Mac. Program Visual Studio komunikuje się z agentem zdalnym uruchomionym na komputerze Mac w celu transferu plików projektu i wykonywania poleceń kompilacji, wdrażania i debugowania. Skonfiguruj i skonfiguruj komputery Mac i Program Visual Studio, aby komunikować się przed utworzeniem aplikacji systemu iOS. Aby uzyskać szczegółowe instrukcje, zobacz Instalowanie i konfigurowanie narzędzi do kompilowania przy użyciu systemu iOS. Uruchom agenta zdalnego na komputerze Mac i połącz go z programem Visual Studio. Następnie możesz skompilować i uruchomić aplikację systemu iOS, aby zweryfikować instalację i konfigurację.

Aby wdrożyć aplikację na urządzeniu z systemem iOS, najpierw skonfiguruj automatyczne logowanie w środowisku Xcode. Automatyczne podpisywanie tworzy profil aprowizacji w celu podpisania kompilacji aplikacji.

Aby skonfigurować automatyczne podpisywanie w środowisku Xcode

  1. Jeśli jeszcze tego nie zrobiono, zainstaluj program Xcode na komputerze Mac.

  2. Otwórz aplikację Xcode na komputerze Mac.

  3. Utwórz nowy projekt Xcode aplikacji z pojedynczym widokiem. Wypełnij wymagane pola podczas tworzenia projektu. Wartości mogą być dowolne, ponieważ projekt jest używany tylko do tworzenia profilu aprowizacji, który jest używany później do podpisywania kompilacji aplikacji.

  4. Dodaj swój identyfikator Apple ID zarejestrowany na koncie programu Apple Developer Program do programu Xcode. Identyfikator Apple ID jest używany jako tożsamość podpisywania do podpisywania aplikacji. Aby dodać tożsamość podpisywania w programie Xcode, otwórz menu Xcode i wybierz pozycję Preferencje. Wybierz pozycję Konta i kliknij przycisk Dodaj (+), aby dodać identyfikator Apple ID. Aby uzyskać szczegółowe instrukcje, zobacz Dodawanie konta Apple ID.

  5. W ustawieniach "Ogólne" projektu Xcode zmień wartość identyfikatora pakietu na com.<NameOfVSProject>, gdzie <NameOfVSProject> jest taka sama jak utworzono projekt rozwiązania Visual Studio. Jeśli na przykład utworzono projekt o nazwie MyOpenGLESApp w programie Visual Studio, ustaw wartość Identyfikator pakietu na com.MyOpenGLESApp.

    Screenshot of the Xcode bundle identifier.

  6. Aby włączyć automatyczne podpisywanie, sprawdź. Automatyczne zarządzanie podpisywaniem**.

    Screenshot of Xcode automatic signing value.

  7. Wybierz nazwę zespołu identyfikatora Apple ID dodanego jako zespół programistyczny.

    Screenshot of the Xcode team value.

Aby skompilować i uruchomić aplikację systemu iOS na urządzeniu z systemem iOS

  1. Uruchom agenta zdalnego na komputerze Mac i sprawdź, czy program Visual Studio jest sparowany z agentem zdalnym. Aby uruchomić agenta zdalnego, otwórz okno aplikacji terminalu i wprowadź polecenie vcremote. Aby uzyskać więcej informacji, zobacz Konfigurowanie agenta zdalnego w programie Visual Studio.

    Mac Terminal window running vcremote.

  2. Dołącz urządzenie z systemem iOS do komputera Mac. Po pierwszym dołączeniu urządzenia do komputera zostanie wyświetlony alert z pytaniem, czy komputer ma mieć dostęp do urządzenia. Włącz urządzenie, aby ufało komputerowi Mac.

  3. Jeśli program Visual Studio nie został jeszcze wybrany, wybierz platformę rozwiązania z listy rozwijanej Platformy rozwiązań na podstawie procesora urządzenia. W tym przykładzie jest to procesor ARM64 .

    Screenshot of setting the Solution Platform to ARM64.

  4. W Eksplorator rozwiązań otwórz menu skrótów projektu MyOpenGLESApp.iOS.Application i wybierz pozycję Zwolnij projekt, aby zwolnić projekt.

  5. Ponownie otwórz menu skrótów dla rozładowanego projektu MyOpenGLESApp.iOS.Application, a następnie wybierz pozycję Edytuj plik projektu pbxproj . project.pbxproj W pliku wyszukaj buildSettings atrybut i dodaj DEVELOPMENT_TEAM go przy użyciu identyfikatora apple Team ID. Poniższy zrzut ekranu przedstawia przykładową wartość 123456ABC identyfikatora zespołu firmy Apple. Wartość identyfikatora zespołu Firmy Apple można znaleźć w pliku Xcode. Przejdź do pozycji Kompiluj Ustawienia i umieść kursor nad nazwą zespołu deweloperów, aby wyświetlić etykietkę narzędzia. Etykietka narzędzia zawiera identyfikator zespołu.

    Screenshot of setting the development team.

  6. project.pbxproj Zamknij plik, a następnie otwórz menu skrótów dla rozładowanego projektu MyOpenGLESApp.iOS.Application i wybierz pozycję Załaduj ponownie projekt, aby ponownie załadować projekt.

  7. Teraz skompiluj projekt MyOpenGLESApp.iOS.Application, otwierając menu skrótów dla projektu i wybierając pozycję Kompilacja.

    Using the shortcut menu to build the iOS Application project.

    W oknie Dane wyjściowe zostaną wyświetlone dane wyjściowe procesu kompilacji. Przedstawia wyniki dla biblioteki statycznej systemu iOS i aplikacji systemu iOS. Na komputerze Mac w oknie Terminal z uruchomionym agentem zdalnym jest wyświetlane polecenie i działanie transferu plików.

    Na komputerze Mac może zostać wyświetlony monit o zezwolenie na współprojektowanie dostępu do pęku kluczy. Wybierz pozycję Zezwalaj , aby kontynuować.

  8. Wybierz urządzenie z systemem iOS na pasku narzędzi, aby uruchomić aplikację na urządzeniu dołączonym do komputera Mac. Jeśli aplikacja nie zostanie uruchomiona, sprawdź, czy urządzenie daje uprawnienie do wykonania wdrożonej aplikacji na urządzeniu. To uprawnienie można ustawić, przechodząc do Ustawienia> Ogólne> Zarządzanie urządzeniami na urządzeniu. Wybierz konto aplikacji dla deweloperów, ufaj swojemu kontu i zweryfikuj aplikację. Spróbuj ponownie uruchomić aplikację z poziomu programu Visual Studio.

    Screenshot of the iOS app on an iOS device.

    Po uruchomieniu aplikacji możesz ustawić punkty przerwania i użyć debugera programu Visual Studio do zbadania ustawień lokalnych, wyświetlenia stosu wywołań i obserwowania wartości.

    Screenshot of the Debugger at a breakpoint in the iOS app.

  9. Naciśnij klawisze Shift+F5, aby zatrzymać debugowanie.

    Wygenerowane projekty aplikacji i bibliotek systemu iOS umieszczają kod C++ w bibliotece statycznej, która implementuje tylko udostępniony kod. Większość kodu aplikacji znajduje się w projekcie Application . Wywołania kodu biblioteki udostępnionej w tym projekcie szablonu są wykonywane w pliku GameViewController.m . Aby skompilować aplikację systemu iOS, program Visual Studio używa zestawu narzędzi platformy Xcode, który wymaga komunikacji z klientem zdalnym uruchomionym na komputerze Mac.

    Program Visual Studio przesyła pliki projektu do klienta zdalnego. Następnie wysyła polecenia w celu skompilowania aplikacji przy użyciu środowiska Xcode. Klient zdalny wysyła informacje o stanie kompilacji z powrotem do programu Visual Studio. Po pomyślnym utworzeniu aplikacji program Visual Studio może wysyłać polecenia w celu uruchomienia i debugowania aplikacji. Debuger w programie Visual Studio kontroluje aplikację działającą na urządzeniu z systemem iOS dołączonym do komputera Mac. Program Visual Studio mapuje właściwości projektu na opcje używane do kompilowania, łączenia i debugowania na docelowej platformie systemu iOS. Aby uzyskać szczegóły opcji wiersza polecenia kompilatora, otwórz okno dialogowe Strony właściwości dla projektu MyOpenGLESApp.iOS.StaticLibrary.

Dostosowywanie aplikacji

Możesz zmodyfikować udostępniony kod C++, aby dodać lub zmienić typowe funkcje. Zmień wywołania kodu udostępnionego w projektach MyOpenGLESApp.Android.NativeActivity i MyOpenGLESApp.iOS.Application , aby były zgodne. Makra preprocesora umożliwiają określenie sekcji specyficznych dla platformy we wspólnym kodzie. Makro __ANDROID__ preprocesora jest wstępnie zdefiniowane podczas kompilacji dla systemu Android. Makro __APPLE__ preprocesora jest wstępnie zdefiniowane podczas kompilacji dla systemu iOS.

Aby wyświetlić funkcję IntelliSense dla określonej platformy projektu, wybierz projekt z listy rozwijanej przełącznika kontekstu. Znajduje się on na pasku nawigacyjnym w górnej części okna edytora.

Screenshot of the Project Context Switcher dropdown in the Editor.

Problemy z funkcją IntelliSense w kodzie używanym przez bieżący projekt są oznaczone czerwoną falistą linią. Purpurowa falista linia oznacza problem w innych projektach. Program Visual Studio nie obsługuje kolorowania kodu ani funkcji IntelliSense dla plików Java lub Objective-C. Można jednak nadal modyfikować pliki źródłowe i zasoby. Użyj ich, aby ustawić nazwę aplikacji, ikonę i inne szczegóły implementacji.