Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
I Visual Studio väljer du Nytt>>filprojekt.
I dialogrutan Nytt projekt går du till Mallar, väljer Visual C++>Cross Platform och väljer sedan mallen OpenGLES-program (Android, iOS).
Ge appen ett namn som MyOpenGLESApp och välj sedan OK.
Visual Studio skapar den nya lösningen och öppnar Solution Explorer.
I Visual Studio väljer du Nytt>>filprojekt.
I dialogrutan Skapa ett nytt projekt väljer du mallen OpenGLES-program (Android, iOS) och väljer sedan Nästa.
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.
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.NativeActivityinnehå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 iMyOpenGLESApp.Shared. Förkompilerade rubriker finns i pch.h. Det här inbyggda aktivitetsappprojektet kompileras till en delad biblioteksfil (.so) som hämtas avMyOpenGLESApp.Android.Packagingprojektet.MyOpenGLESApp.iOS.StaticLibraryskapar en statisk iOS-biblioteksfil (.a) som innehåller den delade koden iMyOpenGLESApp.Shared. Den är länkad till appen som skapats avMyOpenGLESApp.iOS.Applicationprojektet.MyOpenGLESApp.Sharedinnehå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ådeMyOpenGLESApp.Android.NativeActivityochMyOpenGLESApp.iOS.StaticLibrary.
Lösningen har två projekt för att skapa appar för Android- och iOS-plattformarna:
MyOpenGLESApp.Android.Packagingskapar .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.Applicationinnehåller resurser och Objective-C limkod för att skapa en iOS-app som länkar till C++-koden för statiskt bibliotek iMyOpenGLESApp.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
Om den inte redan är markerad väljer du x86 i listrutan Lösningsplattformar .
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.
Öppna snabbmenyn för projektet i
MyOpenGLESApp.Android.Packagingoch välj sedan Skapa.
Fönstret Utdata visar utdata från byggprocessen för det delade Android-biblioteket och Android-appen.
Välj en av de emulerade Android-enhetsprofilerna som 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.
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:
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.
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
Om du inte redan har gjort det installerar du Xcode på din Mac.
Öppna Xcode-appen på din Mac.
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.
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.
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 namnetMyOpenGLESAppi Visual Studio anger du Bundle Identifier tillcom.MyOpenGLESApp.
För att aktivera automatisk signering, markera. Hantera signering automatiskt**.
Välj teamnamnet för det Apple-ID som du lade till som utvecklingsteam.
Skapa och köra iOS-appen på en iOS-enhet
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.
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.
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 .
I Solution Explorer öppnar du snabbmenyn för projektet MyOpenGLESApp.iOS.Application och väljer Ta bort projekt för att ta bort projektet.
Öppna återigen snabbmenyn för det borttagna Projektet MyOpenGLESApp.iOS.Application och välj Redigera project.pbxproj för att redigera projektfilen.
project.pbxprojLeta efterbuildSettingsattributet i filen och lägg tillDEVELOPMENT_TEAMmed ditt Apple Team-ID. Skärmbilden nedan visar ett exempelvärde123456ABCpå 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.
project.pbxprojStä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.Skapa nu projektet MyOpenGLESApp.iOS.Application genom att öppna snabbmenyn för projektet och välja Skapa.
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.
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.
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.
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
Applicationprojektet. 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.
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.