Dela via


Skapa ett OpenGL ES-program på Android och iOS

Du kan skapa Visual Studio-lösningar och -projekt för iOS-appar och Android-appar som delar gemensam kod. Den här artikeln vägleder dig genom en kombinerad lösningsmall. Den skapar både en iOS-app och en Android Native Activity-app. Apparna har C++-kod gemensamt som använder OpenGL ES för att visa samma animerade roterande kub på varje plattform. OpenGL ES (OpenGL for Embedded Systems eller GLES) är ett 2D- och 3D-grafik-API. Det stöds på många mobila enheter.

Kravspecifikation

Viktigt!

OpenGL-stöd är inte längre tillgängligt. Den var senast tillgänglig i Visual Studio 17.3.

Här följer systemkraven för att skapa en OpenGL ES-app för iOS och Android. Om du inte redan har gjort det, installera arbetsytan Mobile Development med C++ i Visual Studio Installer. Om du vill hämta OpenGL ES-mallarna och skapa för iOS inkluderar du de valfria C++ iOS-utvecklingsverktygen. Om du vill skapa för Android installerar du C++ Android-utvecklingsverktygen och nödvändiga verktyg från tredje part: Android NDK, Apache Ant och Google Android Emulator.

För bättre emulatorprestanda på Intel-plattformar är ett alternativ att installera Intel Hardware Accelerated Execution Manager (HAXM). Detaljerade anvisningar finns i Installera plattformsoberoende mobilutveckling med C++.

Om du vill skapa och testa iOS-appen behöver du en Mac-dator. Konfigurera den enligt installationsanvisningarna. Mer information om hur du konfigurerar för iOS-utveckling finns i Installera och konfigurera verktyg för att skapa med iOS.

Skapa ett nytt OpenGLES-programprojekt

I den här självstudien skapar du först ett nytt OpenGL ES-programprojekt och skapar och kör det sedan i en Android-emulator. Sedan skapar du appen för iOS och kör appen på en iOS-enhet.

  1. I Visual Studio väljer du Nytt>>filprojekt.

  2. I dialogrutan Nytt projekt går du till Mallar, väljer Visual C++>Cross Platform och väljer sedan mallen OpenGLES-program (Android, iOS).

  3. Ge appen ett namn som MyOpenGLESApp och välj sedan OK.

    Skärmbild av dialogrutan Nytt projekt där projektmallen OpenGLES-program har valts, med MyOpenGLESApp i textrutan Namn.

    Visual Studio skapar den nya lösningen och öppnar Solution Explorer.

    Skärmbild av MyOpenGLESApp i Solution Explorer.

  1. I Visual Studio väljer du Nytt>>filprojekt.

  2. I dialogrutan Skapa ett nytt projekt väljer du mallen OpenGLES-program (Android, iOS) och väljer sedan Nästa.

  3. I dialogrutan Konfigurera ditt nya projekt anger du ett namn som MyOpenGLESApp i Projektnamn och väljer sedan Skapa.

    Visual Studio skapar den nya lösningen och öppnar Solution Explorer.

    Skärmbild av MyOpenGLESApp i Solution Explorer.

Den nya OpenGL ES-programlösningen innehåller tre biblioteksprojekt och två programprojekt. Mappen Bibliotek innehåller ett projekt för delad kod och två plattformsspecifika projekt som refererar till den delade koden:

  • MyOpenGLESApp.Android.NativeActivity innehåller referenser och limkod som implementerar din app som en intern aktivitet på Android. Startpunkterna från limkoden implementeras i main.cpp, som innehåller den gemensamma delade koden i MyOpenGLESApp.Shared. Förkompilerade rubriker finns i pch.h. Det här inbyggda aktivitetsappprojektet kompileras till en delad biblioteksfil (.so) som hämtas av MyOpenGLESApp.Android.Packaging projektet.

  • MyOpenGLESApp.iOS.StaticLibrary skapar en statisk iOS-biblioteksfil (.a) som innehåller den delade koden i MyOpenGLESApp.Shared. Den är länkad till appen som skapats av MyOpenGLESApp.iOS.Application projektet.

  • MyOpenGLESApp.Shared innehåller den delade koden som fungerar på olika plattformar. Den använder förprocessormakron för villkorlig kompilering av plattformsspecifik kod. Den delade koden hämtas av projektreferensen i både MyOpenGLESApp.Android.NativeActivity och MyOpenGLESApp.iOS.StaticLibrary.

Lösningen har två projekt för att skapa appar för Android- och iOS-plattformarna:

  • MyOpenGLESApp.Android.Packaging skapar .apk-filen för distribution på en Android-enhet eller emulator. Den här filen innehåller de resurser och AndroidManifest.xml fil där du anger manifestegenskaper. Den innehåller också den build.xml fil som styr Ant-byggprocessen. Det anges som startprojekt som standard så att det kan distribueras och köras direkt från Visual Studio.

  • MyOpenGLESApp.iOS.Application innehåller resurser och Objective-C limkod för att skapa en iOS-app som länkar till C++-koden för statiskt bibliotek i MyOpenGLESApp.iOS.StaticLibrary. Det här projektet skapar ett byggpaket som överförs till din Mac av Visual Studio och fjärragenten. När du skapar det här projektet skickar Visual Studio filerna och kommandona för att skapa och distribuera din app på Mac.

Skapa och kör Android-appen

Lösningen som skapas av mallen anger Android-appen som standardprojekt. Du kan skapa och köra den här appen för att verifiera installationen och inställningen. För ett första test kör du appen på en av enhetsprofilerna som installerats av emulatorn för Android. Om du föredrar att testa appen på en annan plattform kan du starta emulatorn för den plattformen. Du kan också ansluta en enhet till datorn.

Så här skapar och kör du appen Inbyggd Android-aktivitet

  1. Om den inte redan är markerad väljer du x86 i listrutan Lösningsplattformar .

    Skärmbild av listrutan Lösningsplattform med x86 markerat.

    Använd x86 som mål för emulatorn. Om du vill rikta in dig på en enhet väljer du lösningsplattformen baserat på enhetsprocessorn. Om listan Lösningsplattformar inte visas väljer du Lösningsplattformar i listan Lägg till/ta bort knappar och väljer sedan din plattform.

  2. Öppna snabbmenyn för projektet i MyOpenGLESApp.Android.Packaging och välj sedan Skapa.

    Skärmbild av Solution Explorer-fönstret med snabbmenyn för Android Packaging Project som visar kommandot Skapa.

    Fönstret Utdata visar utdata från byggprocessen för det delade Android-biblioteket och Android-appen.

    Skärmbild av Skapa utdata för Android-projekt.

  3. Välj en av de emulerade Android-enhetsprofilerna som distributionsmål.

    Välj distributionsmål.

    Du kan ha installerat andra emulatorer eller anslutit en Android-enhet. Du kan välja dem i rullgardinsmenyn för utplaceringsmål. För att kunna köra appen måste den inbyggda lösningsplattformen matcha målenhetens plattform.

  4. Tryck på F5 för att börja felsöka eller Skift+F5 för att starta utan felsökning.

    Visual Studio startar emulatorn, vilket tar flera sekunder att läsa in och distribuera koden. Så här visas appen i emulatorn:

    Skärmbild av appen som körs i en Android-emulator.

    När appen har startat kan du ange brytpunkter och använda felsökningsprogrammet för att gå igenom kod, undersöka lokalbefolkningen och titta på värden.

  5. Tryck på Skift+F5 för att sluta felsöka.

    Emulatorn är en separat process som fortsätter att köras. Du kan redigera, kompilera och distribuera koden flera gånger till samma emulator. Appen visas i appsamlingen i emulatorn och kan startas därifrån direkt.

    De genererade Android Native Activity-app- och biblioteksprojekten placerar den delade C++-koden i ett dynamiskt bibliotek. Den innehåller "lim" kod för gränssnitt med Android-plattformen. Merparten av appkoden finns i biblioteket. Manifestet, resurserna och bygginstruktionerna finns i paketeringsprojektet. Den delade koden anropas från main.cpp i NativeActivity-projektet. Mer information om hur du programmerar en inbyggd Android-aktivitet finns på sidan NDK-begrepp för Android Developer.

    Visual Studio skapar Android Native Activity-projekt med hjälp av Android NDK. Den använder Clang som plattformsverktyg. Visual Studio mappar projektets egenskaper till kommandona kompilering, länk och felsökning på målplattformen. Mer information finns i dialogrutan Egenskapssidor för projektet MyOpenGLESApp.Android.NativeActivity. Mer information om kommandoradsväxlar finns i Användarhandbok för Clang Compiler.

Skapa och köra iOS-appen på en iOS-enhet

Du skapar och redigerar iOS-appprojektet i Visual Studio. På grund av licensbegränsningar måste den skapas och distribueras från en Mac. Visual Studio kommunicerar med en fjärragent som körs på Mac för att överföra projektfiler och köra kommandon för att skapa, distribuera och felsöka. Konfigurera din Mac och Visual Studio så att de kommunicerar innan du kan skapa iOS-appen. Detaljerade anvisningar finns i Installera och konfigurera verktyg för att skapa med iOS. Kör fjärragenten på din Mac och para ihop den med Visual Studio. Därefter kan du bygga och köra iOS-appen för att verifiera installationen och inställningen.

Om du vill distribuera din app till en iOS-enhet konfigurerar du först automatisk inloggning i Xcode. Automatisk signering skapar en försörjningsprofil för att signera en byggversion av appen.

Så här konfigurerar du automatisk signering av Xcode

  1. Om du inte redan har gjort det installerar du Xcode på din Mac.

  2. Öppna Xcode-appen på din Mac.

  3. Skapa ett nytt Single View Application Xcode-projekt. Fyll i de obligatoriska fälten när projektet skapas. Värdena kan vara godtyckliga eftersom projektet endast används för att skapa en etableringsprofil som används senare för att signera en version av appen.

  4. Lägg till ditt Apple-ID som har registrerats i ett Apple Developer Program-konto i Xcode. Ditt Apple-ID används som en signeringsidentitet för att signera appar. Om du vill lägga till din signeringsidentitet i Xcode öppnar du Xcode-menyn och väljer Inställningar. Välj Konton och klicka på knappen Lägg till (+) för att lägga till ditt Apple-ID. Detaljerade anvisningar finns i Lägga till ditt Apple-ID-konto.

  5. Från Xcode-projektets "Allmänna" inställningar ändrar du värdet för Paketidentifierare till com.<NameOfVSProject>, där <NameOfVSProject> är samma namn som Visual Studio-lösningsprojektet som du skapade. Om du till exempel har skapat ett projekt med namnet MyOpenGLESApp i Visual Studio anger du Bundle Identifier till com.MyOpenGLESApp.

    Skärmbild av Xcode-paketidentifieraren.

  6. För att aktivera automatisk signering, markera. Hantera signering automatiskt**.

    Skärmbild av Xcode-värdet för automatisk signering.

  7. Välj teamnamnet för det Apple-ID som du lade till som utvecklingsteam.

    Skärmbild av Xcode-teamets värde.

Skapa och köra iOS-appen på en iOS-enhet

  1. Kör fjärragenten på din Mac och kontrollera att Visual Studio är kopplat till fjärragenten. Starta fjärragenten genom att öppna ett terminalappfönster och ange vcremote. Mer information finns i Konfigurera fjärragenten i Visual Studio.

    Ett Mac-terminalfönster som kör vcremote.

  2. Koppla en iOS-enhet till din Mac. När du ansluter enheten till en dator för första gången, frågar en avisering om du litar på att datorn har åtkomst till enheten. Aktivera enheten för att lita på Mac-datorn.

  3. Om den inte redan är vald i Visual Studio väljer du lösningsplattformen i listrutan Lösningsplattformar baserat på enhetsprocessorn. I det här exemplet är det en ARM64-processor .

    Skärmbild av hur du ställer in Lösningsplattformen på ARM64.

  4. I Solution Explorer öppnar du snabbmenyn för projektet MyOpenGLESApp.iOS.Application och väljer Ta bort projekt för att ta bort projektet.

  5. Öppna återigen snabbmenyn för det borttagna Projektet MyOpenGLESApp.iOS.Application och välj Redigera project.pbxproj för att redigera projektfilen. project.pbxproj Leta efter buildSettings attributet i filen och lägg till DEVELOPMENT_TEAM med ditt Apple Team-ID. Skärmbilden nedan visar ett exempelvärde 123456ABC på för Apple Team-ID:t. Du hittar värdet för ditt Apple Team-ID från Xcode. Gå till Skapa inställningar och hovra över utvecklingsteamets namn för att visa en knappbeskrivning. Verktygstipset visar ditt team-ID.

    Skärmbild av hur du ställer in utvecklingsteamet.

  6. project.pbxproj Stäng filen och öppna sedan snabbmenyn för projektet MyOpenGLESApp.iOS.Application och välj Läs in projektet igen för att läsa in projektet igen.

  7. Skapa nu projektet MyOpenGLESApp.iOS.Application genom att öppna snabbmenyn för projektet och välja Skapa.

    Använd snabbmenyn för att skapa iOS-programprojektet.

    Fönstret Utdata visar utdata från byggprocessen. Den visar resultat för det statiska iOS-biblioteket och iOS-appen. På Mac visar terminalfönstret som kör fjärragenten kommando- och filöverföringsaktiviteten.

    På din Mac-dator kan du uppmanas att tillåta codesign att komma åt din nyckelring. Välj Tillåt för att fortsätta.

  8. Välj din iOS-enhet i verktygsfältet för att köra appen på din enhet som är ansluten till mac-datorn. Om appen inte startar kontrollerar du att enheten ger behörighet för ditt distribuerade program att köras på enheten. Den här behörigheten kan anges genom att gå till Inställningar>Allmän>enhetshantering på enheten. Välj ditt utvecklarappkonto, lita på ditt konto och verifiera appen. Försök att köra appen igen från Visual Studio.

    Skärmbild av iOS-appen på en iOS-enhet.

    När appen har startat kan du ange brytpunkter och använda Visual Studio-felsökningsprogrammet för att undersöka lokalbefolkningen, se anropsstacken och titta på värden.

    Skärmbild av felsökaren vid en brytpunkt i iOS-appen.

  9. Tryck på Skift+F5 för att sluta felsöka.

    De genererade iOS-app- och biblioteksprojekten placerar C++-koden i ett statiskt bibliotek som endast implementerar den delade koden. Merparten av programkoden finns i Application projektet. Anropen till den delade bibliotekskoden i det här mallprojektet görs i filen GameViewController.m . För att skapa din iOS-app använder Visual Studio Xcode-plattformsverktyguppsättningen, som kräver kommunikation med en fjärrklient som körs på en Mac.

    Visual Studio överför projektfilerna till fjärrklienten. Sedan skickar den kommandon för att skapa appen med Xcode. Fjärrklienten skickar tillbaka information om byggstatus till Visual Studio. När appen har skapats kan Visual Studio skicka kommandon för att köra och felsöka appen. Felsökningsprogrammet i Visual Studio styr appen som körs på din iOS-enhet som är ansluten till din Mac. Visual Studio mappar projektegenskaper till de alternativ som används för att kompilera, länka och felsöka på mål-iOS-plattformen. För information om kommandoradsalternativet för kompilatorn öppnar du dialogrutan Egenskapssidor för projektet MyOpenGLESApp.iOS.StaticLibrary.

Anpassa dina appar

Du kan ändra den delade C++-koden för att lägga till eller ändra vanliga funktioner. Ändra anropen till den delade koden i projekten MyOpenGLESApp.Android.NativeActivity och MyOpenGLESApp.iOS.Application så att de matchar. Du kan använda makron för förprocessorer för att ange plattformsspecifika avsnitt i din gemensamma kod. Makrot för processorn __ANDROID__ är fördefinierat när du skapar för Android. Förprocessormakrot __APPLE__ är fördefinierat när du bygger för iOS.

Om du vill se IntelliSense för en viss projektplattform väljer du projektet i listrutan kontextväxlare. Den finns i navigeringsfältet överst i redigeringsfönstret.

Skärmbild av listrutan Projektkontextväxlare i redigeraren.

IntelliSense-problem i kod som används av det aktuella projektet markeras med en röd vågig linje. En lila vågig linje markerar problem i andra projekt. Visual Studio stöder inte kodfärgning eller IntelliSense för Java- eller Objective-C-filer. Du kan dock fortfarande ändra källfilerna och resurserna. Använd dem för att ange programnamn, ikon och annan implementeringsinformation.