Przykłady rozszerzenia do tworzenia gier na Androida pokazują, jak korzystać z kluczowych funkcji rozszerzenia. W tym temacie opisano przykłady oraz niezbędne do jego uruchomienia.
Poniższe przykłady są dostępne w strona pobierania:
- HelloJNI: projekt wprowadzający.
- Endless-Tunnel: projekt tylko na Androida.
- Teapot: wieloplatformowy projekt na systemy Windows i Android.
- AssemblyCode-Link-Objects: projekt szablonu zawierający kod źródłowy asemblera.
Zanim rozpoczniesz
Zainstaluj rozszerzenie Android Game Development Extension i przykłady. Zobacz krótkie wprowadzenie. Opisaliśmy w nim również, jak tworzyć i uruchomisz próbkę z użyciem wersji aplikacji Teapot na Androida. .
Przewodnik po konfiguracji projektu zawiera informacje o tym, skonfigurować ustawienia projektu korzystającego z tego rozszerzenia, takie jak dodając platformę Androida i plik APK.
HelloJNI
Przykład HelloJNI to prosty projekt, który wyświetla komunikat „Hello from JNI” w oknie aplikacji. Projekt używa innego zestawu kodu źródłowego dla systemów Windows na urządzeniu z Androidem.
- Katalog kodu źródłowego Androida i katalogu skryptów kompilacji Gradle: HelloJNI\AndroidPackaging
- Kod źródłowy Windows i katalog projektów Visual Studio: HelloJNI.
Podczas kompilacji projektu Visual Studio przekazuje te dane:
ustawień do pliku build.gradle
na poziomie aplikacji. Możesz zmienić te ustawienia przez
zmianie skryptów kompilacji Gradle.
MSBUILD_NDK_VERSION
MSBUILD_MIN_SDK_VERSION
MSBUILD_JNI_LIBS_SRC_DIR
MSBUILD_ANDROID_OUTPUT_APK_NAME
MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
Aby skonfigurować i uruchomić przykład:
- W Visual Studio otwórz i skompiluj przykładowy kod HelloJNI.
- Dodaj platformę Android arm64-v8a. Więcej Więcej informacji zawiera Dodawanie platformy Androida
- Dodawanie elementu APK na Androida na nową platformę.
- Skompiluj projekt.
- Dodaj te platformy Androida, a potem dodaj element APK na Androida Android-armeabi-v7a, Android-x86 i Android-x86_64.
- Utwórz i uruchom przykład.
Niekończący się tunel
Przykład „Endless-Tunnel” to gra na Androida, w której gracz zbiera białe tło zbliżając się do końca tunelu. Została ona przeniesiona z OpenGL w Repozytorium Androida NDK na GitHubie. Przykład nie obejmuje wersji gry na Windows.
Ustawienia i platformy Androida są już skonfigurowane dla przykładu, więc możesz kompilować i uruchamiać projekt w Visual Studio bez żadnych modyfikacji. Gdy otworzy rozwiązanie, Eksplorator rozwiązań wyświetli te moduły:
- tunel bez końca: moduł aplikacji, który wyświetla logikę gry.
- glm: migawka repozytorium Math OpenGL. która ma postać biblioteki statycznej.
- natywny_app_glue: kod NDK komunikujący się z NativeActivity obiektu.
Czajniczek
W przykładzie „Teapot” wyświetla się klasyczny dzbank do herbaty renderowany z użyciem OpenGL ES i rozszerzenie do Android Game Development Extension, by zademonstrować te funkcje:
- Programowanie projektów na wielu platformach: możesz utworzyć próbkę Teapot dla Windows i Android.
- Niestandardowe pakiety dla Androida: skrypty kompilacji Gradle zostały przeniesione do
w katalogu głównym próbki, w którym znajduje się plik
Teapot.sln
. - Eksperymentalna integracja kompilacji Ninja, która umożliwia otwórz projekt w Android Studio.
- Niestandardowe konfiguracje Androida pokazujące, jak używać Adres Sanitizer (ASan) i Hardware Address Sanitizer (HWAsan) –
Implementacja próbki Teapot jest podzielona na wiele części, typowe dla dużych aplikacji i gier działających na wielu platformach:
- Moduł
GameApplication
: określa działania użytkownika i stany aplikacji, takie jak gdy użytkownik obraca czajnik albo aktualizuje statystyki aplikacji. - Moduł
GameEngine
: implementuje podstawowy moduł renderowania.
Aby skonfigurować przykładowy kod i uruchomić go na urządzeniu z Androidem, zapoznaj się z krótkim wprowadzeniem. Do skonfiguruj przykład i uruchom go w systemie Windows:
- Zainstaluj GLEW:
- Pobierz i rozpakuj GLEW.
- Skopiuj pliki binarne z
$your-glew-directory\bin\Release\x64
do%SystemRoot%\system32
- Zainstaluj freeglut:
- Pobierz i rozpakuj freeglut.
- Skopiuj
$your-freeglut-directory\bin\x86\freeglut.dll
do%SystemRoot%\system32
.
- Dodaj zależności projektu freeglut:
- Otwórz
Teapot.sln
w Visual Studio. - W menu kliknij Debuguj >. x64 > Lokalny debuger systemu Windows.
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy GameApplication i wybierz Właściwości > C/C++ > Ogólne > Dodatkowe katalogi uwzględniania.
- Dodaj do ścieżki element
$your-freeglut-dir\include
.
- Kliknij OK.
- Wybierz Linker > Ogólne > Dodatkowe katalogi biblioteczne
- Dodaj do ścieżki element
$your-freeglut-dir\lib\x64
. - Kliknij OK.
- Wybierz Linker > Ogólne > Dodatkowe katalogi biblioteczne
- Dodaj do ścieżki element
freeglut.lib
. - Kliknij OK.
- Otwórz
- Dodaj zależności projektu GLEW:
- W panelu Eksplorator rozwiązań kliknij prawym przyciskiem myszy. GameApplication i wybierz Właściwości > C/C++ > Ogólne > Dodatkowe katalogi uwzględniania.
- Dodaj do ścieżki element
$your-glew-dir\include
. - Kliknij OK.
- Wybierz Linker > Ogólne > Dodatkowe katalogi biblioteczne
- Dodaj do ścieżki element
$your-glew-dir\lib\Release\x86
. - Kliknij OK.
- Wybierz Linker > Ogólne > Dodatkowe katalogi biblioteczne
- Dodaj do ścieżki element
glew32.lib
. - Kliknij OK.
- Uruchom przykład w systemie Windows:
- Na pasku narzędzi Visual Studio kliknij przycisk uruchamiania Local Windows Debugger.
- Przykład powinien wyglądać tak:
AssemblyCode-Link-Objects
To jest projekt szablonu pokazujący, jak wygenerować aplikację natywną na Androida. z asmbly i kodu źródłowego w C/C++. Oto główne komponenty:
AssemblyCode-Link-Objects
: główna biblioteka natywna na Androida utworzona na podstawie C++ oraz kod źródłowy asemblera.StaticLib
: pomocnicza biblioteka statyczna, która eksportuje danefrom_static_lib_assembly_code_as
.
Ten projekt obsługuje wiele architektur. Każda obsługiwana architektura ma swoje
własne pliki źródłowe implementujące funkcje eksportowane z StaticLib
.
Uwzględnij tylko pliki źródłowe zestawu dla używanych platform
budynku. Ten projekt uwzględnia pliki asemblera w kompilacjach za pomocą
niestandardowych narzędzi do kompilacji.
Aby skonfigurować i utworzyć przykład:
- W Visual Studio sprawdź, czy niestandardowe narzędzia do kompilacji są skonfigurowane pod kątem
pliki montażowe:
- W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy i kliknij Właściwości. Otworzy się Okno Właściwości stron dla pliku.
- Wybierz konfigurację i platformę, na przykład Wszystkie konfiguracje dla Android-arm64-v8a
- Upewnij się, że opcje Ogólne > – ustawienie Wyklucz z kompilacji. na Nie.
- Upewnij się, że opcje Ogólne > Typ elementu jest ustawiony. do Custom Build Tool.
- Jeśli chcesz zastosować zmiany, kliknij Zastosuj.
- Upewnij się, że
Właściwości konfiguracji > Niestandardowe narzędzia do kompilacji > Wiersz poleceń:
jest ustawiona na
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
NDK zawiera osobny program asembistyczny dla każdej architektury procesora.$(AsToolExe)
mapuje do odpowiedniego narzędzia asemblera. Ten fragment Wykorzystuje łańcuch narzędzi NDK do tworzenia systemów Android x86 i x86_64 w projektach AI. Jeśli chcesz użyć yasm w przypadku platformy Androida x86_64, użyj interfejsu$(YasmToolExe)
. - Upewnij się, że
Właściwości konfiguracji > Niestandardowe narzędzia do kompilacji > Dane wyjściowe:
jest ustawiona na
$(IntDir)%(FileName).o
Ten ciąg musi być uwzględniony w ustawieniu Wiersz poleceń. - Upewnij się, że
Właściwości konfiguracji > Niestandardowe narzędzia do kompilacji > Połącz obiekty:
jest ustawiona na
Yes
Na przykład ustawienia Android-arm64-v8a powinny wyglądają podobnie do tego zrzutu ekranu:
- Skompiluj projekt. Dzięki temu
Plik
libAssmeblyCodeLinkObjects.so
:- Otwórz plik
AssemblyCode-Link-Objects.sln
. - W menu kliknij Kompilacja > Utwórz rozwiązanie.
- Otwórz plik
- Aby sprawdzić, czy funkcje zostały prawidłowo wyeksportowane na Androida
użyj narzędzia nm.exe NDK:
- W wierszu poleceń przejdź do przykładowego katalogu.
- Przejdź do lokalizacji biblioteki Androida wygenerowanej przez
tworzyć. Lokalizacja domyślna jest podobna do
$sample_dir\$solution_configuration\$solution_platform\$platform
i$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
za platformy arm64-v8a. - Sprawdź, czy wyeksportowana sekcja symboli zawiera funkcje za pomocą
uruchamiając następujące polecenie:
…\ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only …\Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
W danych wyjściowych powinna pojawić się lista symboli, które zawierają :
T from_shared_object_assembly_code_as
T from_static_lib_assembly_code_as