Skonfiguruj projekt, aby używać rozszerzenia Android Game Development.
Rozszerzenie Android Game Development Extension wywołuje MSBuild, by stworzyć kod źródłowy w języku C/C++ w bibliotekach współdzielonych (.so
) i bibliotekach statycznych (.a
). Niestandardowe zadanie MSBuild podczas kompilacji wywołuje Gradle, by skompilować kod źródłowy w języku Java i Kotlin, utworzyć pakiet zasobów oraz wygenerować plik APK do wdrożenia. Podczas konfigurowania projektu musisz upewnić się, że MSBuild ma informacje potrzebne do skompilowania z myślą o platformie Androida.
Kompilowanie C/C++ za pomocą MSBuild
Typowy projekt na Androida jest tworzony w Gradle, gdzie natywny kod w projekcie jest kompilowany za pomocą karnetu Gradle uruchamiającego CMake lub ndk-build. Dzięki rozszerzeniu Android Game Development Visual Studio proces kompilacji jest odwrócony. Teraz jest to MSBuild. Cały kod źródłowy w języku C/C++ jest tworzony w pierwszej kolejności przez MSBuild dla nowych platform Androida zainstalowanych w systemie w ramach rozszerzenia (np. „Android-x86_64”). Następnie MSBuild wywołuje Gradle, aby spakować pliki zasobów wspólnych, które zawierają logikę C/C++, do pliku APK.
Najpierw zreplikuj istniejącą logikę kompilacji projektu w CMake lub ndk-build w MSBuild. Ustaw następujące platformy docelowe:
- Android x86
- Android x86_64
- Android-armeabi-v7a
- Android-arm64-V8a
Wszystkie te platformy są dostarczane przez rozszerzenie Android Game Development Extension.
Dodaj platformę Androida
Chociaż przykładowy projekt herbatnika obejmuje platformy Androida, musisz ręcznie dodać platformę Androida do istniejącego projektu. Aby dodać nową platformę, wykonaj w Visual Studio te czynności:
- Wybierz Build > Configuration Manager (Kompilacja > Menedżer konfiguracji).
- W sekcji Aktywna platforma rozwiązań wybierz <Nowa>.
W przypadku nowej platformy wpisz jedną z poniższych wartości:
- Android-armeabi-v7a
- Android-arm64-v8a
- Android-x86
- Android-x86_64
W polu Skopiuj ustawienia z wybierz inną istniejącą platformę Androida lub <Puste>, jeśli nie masz jeszcze żadnych platform Androida. Sprawdź, czy masz włączoną opcję Twórz nowe platformy projektów.
Dodaj element APK na Androida
Wybierz Dodaj > Nowy element > Visual C++ > Android > APK na Androida i kliknij Dodaj. W kolejnym oknie dialogowym skonfiguruj aplikację na Androida.
- Nazwa aplikacji: czytelna dla człowieka nazwa aplikacji na Androida.
- Identyfikator aplikacji: unikalny identyfikator aplikacji na Androida.
- Lokalizacja Eksploratora rozwiązań: lokalizacja folderu wirtualnego, który zawiera dodane pliki obsługi pakietów Androida. Domyślnie pliki te znajdują się też w projekcie w folderze o tej samej nazwie. Możesz dostosować lokalizację, zaznaczając pole wyboru Umieść pliki pomocy w lokalizacji niestandardowej i określając lokalizację niestandardową. Folder wirtualny pozostanie w bieżącym projekcie w Eksploratorze rozwiązań.
Zadbaj o to, aby MSBuild wywołał Gradle w celu skompilowania pakietu APK
MSBuild nie może wywołać Gradle, jeśli nie zna lokalizacji projektu Gradle. Ustaw tę lokalizację za pomocą właściwości Gradle Build Directory, jak pokazano na ilustracji 1.
Rysunek 1. Właściwość Gradle Build Directory
Dodatkowo ustaw właściwości Application Module, Application Variant i APK Name (jak pokazano na poprzednim obrazie), aby MSBuild wiedziała, co kompilować.
- Moduł aplikacji: nazwa podprojektu Gradle. To jest główny projekt ustawiony w pliku
settings.gradle
. W przypadku projektów utworzonych bezpośrednio w Android Studio nazwa ta zazwyczaj nosi nazwęapp
. - Wersja aplikacji: wariant Androida do skompilowania. Ta wartość powinna być ustawiona zgodnie z konfiguracjami MSBuild. Na przykład kompilacja do debugowania powinna mieć wartość ustawioną na wariant do debugowania. Jeśli nazwa konfiguracji MSBuild Twojego projektu pasuje do nazw wariantów Gradle, użyj po prostu wartości domyślnej
$(Configuration)
. - Nazwa pliku APK: nazwa wygenerowanego pliku APK używanego do debugowania i profilowania na komputerze programistycznym. Ta nazwa jest przekazywana do Gradle i skrypt kompilacji Gradle powinien ją uwzględniać (zapoznaj się z właściwością
MSBUILD_ANDROID_OUTPUT_APK_NAME
w kolejnej sekcji).
Modyfikowanie skryptów kompilacji Gradle
Podczas kompilacji MSBuild przekazuje te informacje jako właściwości projektu do skryptu Gradle. Aby odczytywać te właściwości, zmień istniejące skrypty kompilacji w projekcie (zwykle o nazwie build.gradle
).
MSBUILD_MIN_SDK_VERSION
: minimalna wersja pakietu SDK do kompilowania pliku APK. Ustaw tę wartość w polu Minimalna wersja pakietu SDK na Androida na stronie właściwości projektu jak widać na ilustracji 2.
Rysunek 2. Właściwość Minimalna wersja pakietu SDK na AndroidaSkrypt kompilacji Gradle powinien ustawić
minSdkVersion
na tę wartość, jak pokazano poniżej.Odlotowy
android { // ... defaultConfig { applicationId "com.yourcompany.yourapp" minSdkVersion MSBUILD_MIN_SDK_VERSION // ... } // ... }
Kotlin
android { // ... defaultConfig { applicationId = "com.yourcompany.yourapp" minSdkVersion(MSBUILD_MIN_SDK_VERSION) // ... } // ... }
MSBUILD_ANDROID_OUTPUT_APK_NAME
: oczekiwana nazwa pliku APK utworzonego przez Gradle. Rozszerzenie do tworzenia gier na Androida poszuka pliku APK pasującego do tej nazwy, a następnie wdroży go na połączonych urządzeniach (na potrzeby debugowania i profilowania). Ustaw tę wartość w polu Nazwa pliku APK na stronie właściwości projektu jak widać na ilustracji 3.
Rysunek 3. Właściwość Nazwa pliku APKSkrypt kompilacji Gradle musi przestrzegać tej właściwości. W tym przykładzie ustawiamy na przykład nazwę wyjściowego pliku APK dla wszystkich wariantów na nazwę wybraną przez MSBuild.
Odlotowy
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
Kotlin
android { // ... applicationVariants.all { variant -> variant.outputs.all { outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME } } // ... }
MSBUILD_JNI_LIBS_SRC_DIR
: katalog zawierający biblioteki udostępnione (pliki.so
) utworzone przez MSBuild. Ustaw tę wartość w polu Katalog wyjściowy na pokazanej poniżej stronie właściwości projektu. Domyślnie jest to właściwość katalogu wyjściowego dla projektu Visual Studio, jak widać na ilustracji 4.
Rysunek 4. Właściwość Katalog wyjściowyGradle powinna spakować pliki zasobów udostępnianych z tego folderu w pliku APK, aby aplikacja na Androida mogła ładować je w czasie działania.
Odlotowy
android { // ... sourceSets { main { jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR] } } // ... }
Kotlin
android { // ... sourceSets.getByName("main") { jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR) } // ... }
Poza tym każdy kod C/C++ jest teraz kompilowany przez MSBuild, dlatego usuń sekcje
externalNativeBuild
ze skryptów kompilacji Gradle. Sekcje te były używane do wywoływania funkcji CMake lub ndk-build w celu skompilowania kodu C/C++, ale nie są już potrzebne.MSBUILD_NDK_VERSION
: wersja pakietu NDK do skompilowania projektu. Ustaw tę wartość w polu Wersja pakietu NDK dla Androida na stronie usługi projektu przedstawionej na rys. 5.
Rysunek 5. Właściwość Android NDK VersionSkrypt kompilacji Gradle powinien ustawić
ndkVersion
na tę wartość, jak w przykładzie:Odlotowy
android { // ... ndkVersion MSBUILD_NDK_VERSION // ... }
Kotlin
android { // ... ndkVersion = MSBUILD_NDK_VERSION // ... }
Więcej informacji znajdziesz w artykule na temat instalowania i konfigurowania NDK i CMake w Android Studio.