Các mẫu cho Android Game Development Extension (Tiện ích phát triển trò chơi dành cho Android) minh hoạ cách sử dụng các tính năng chính của tiện ích này. Chủ đề này mô tả các mẫu và chế độ cài đặt cần thiết để chạy các mẫu đó.
Các mẫu sau đây đang có sẵn trên trang tải xuống:
- HelloJNI: một dự án mang tính giới thiệu.
- Endless-Tunnel: một dự án chỉ dành cho Android.
- Teapot: một dự án trên nhiều nền tảng dành cho Windows và Android.
- AssemblyCode-Link-Objects: một dự án mẫu có mã nguồn tập hợp.
Trước khi bắt đầu
Cài đặt Android Game Development Extension và các mẫu. Hãy xem phần bắt đầu nhanh để biết thông tin chi tiết. Chủ đề này cũng mô tả cách tạo và chạy mẫu, đồng thời sử dụng phiên bản Android của mẫu Teapot làm ví dụ.
Hướng dẫn về cấu hình dự án mô tả cách định cấu hình chế độ cài đặt cho một dự án sử dụng tiện ích, chẳng hạn như thêm nền tảng Android và tệp APK.
HelloJNI
Mẫu HelloJNI là một dự án đơn giản hiển thị thông báo “Hello From JNI” (”JNI chào bạn”) trong cửa sổ ứng dụng. Dự án này sử dụng một bộ mã nguồn khác cho Windows và Android.
- Thư mục mã nguồn Android và tập lệnh bản dựng Gradle: HelloJNI\AndroidPackaging
- Mã nguồn Windows và thư mục dự án Visual Studio: HelloJNI
Khi bạn tạo dự án, Visual Studio sẽ chuyển
các tuỳ chọn cài đặt sau đến tệp build.gradle
ở cấp ứng dụng. Bạn có thể thay đổi các tuỳ chọn cài đặt này bằng cách
sửa đổi các tập lệnh bản dựng Gradle.
MSBUILD_NDK_VERSION
MSBUILD_MIN_SDK_VERSION
MSBUILD_JNI_LIBS_SRC_DIR
MSBUILD_ANDROID_OUTPUT_APK_NAME
MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
Để thiết lập và chạy mẫu, hãy làm như sau:
- Trong Vision Studio, hãy mở và tạo bản dựng mẫu HelloJNI.
- Thêm nền tảng Android arm64-v8a. Để biết thêm thông tin, hãy xem Thêm một nền tảng Android.
- Thêm một mục APK Android vào nền tảng mới.
- Biên dịch dự án.
- Thêm các nền tảng Android sau đây rồi thêm một mục APK Android vào mỗi nền tảng đó: Android-armeabi-v7a, Android-x86, và Android-x86_64.
- Tạo bản dựng và chạy mẫu.
Endless-Tunnel
Mẫu Endless-Tunnel là một trò chơi Android trong đó người chơi thu thập các hình khối màu trắng trong khi cố gắng đến được cuối đường hầm. Mẫu này được chuyển từ một mẫu OpenGL trong kho lưu trữ Android NDK trên GitHub. Mẫu này không cung cấp phiên bản Windows của trò chơi.
Mẫu này đã được định cấu hình các tuỳ chọn cài đặt và nền tảng Android, vì vậy bạn có thể tạo bản dựng và chạy dự án trong Visual Studio mà không cần sửa đổi. Khi bạn mở giải pháp của mẫu này, Solution Explorer (Trình khám phá giải pháp) sẽ cho thấy các mô-đun sau:
- endless-tunnel: mô-đun ứng dụng hiển thị logic trò chơi.
- glm: ảnh chụp nhanh của kho lưu trữ toán học OpenGL được xây dựng dưới dạng thư viện tĩnh.
- native_app_glue: một trình bao bọc NDK giao tiếp với đối tượng NativeActivity.
Teapot
Mẫu Teapot này sẽ cho thấy một ấm trà cổ điển được kết xuất bằng OpenGL ES và chuyển sang Android Game Development Extension để minh hoạ các tính năng sau:
- Phát triển dự án trên nhiều nền tảng: bạn có thể tạo mẫu Teapot cho Windows và Android.
- Sử dụng gói Android tuỳ chỉnh: tập lệnh bản dựng Gradle đã được chuyển đến thư mục gốc của mẫu, nơi đặt tệp
Teapot.sln
. - Tích hợp bản dựng Ninja thử nghiệm để cho phép mở dự án trong Android Studio.
- Cấu hình Android tuỳ chỉnh minh hoạ cách sử dụng Address Sanitizer (ASan) và Hardware Address Sanitizer (HWAsan).
Quá trình triển khai mẫu Teapot được chia thành nhiều phần. Đây là cách thường dùng cho các ứng dụng và trò chơi lớn trên nhiều nền tảng:
- Mô-đun
GameApplication
: xác định các hành động của người dùng và trạng thái ứng dụng, chẳng hạn như người dùng xoay ấm trà hoặc cập nhật số liệu thống kê về ứng dụng. - Mô-đun
GameEngine
: triển khai mô-đun kết xuất cốt lõi.
Để thiết lập và chạy mẫu trên Android, hãy xem phần "bắt đầu nhanh". Để thiết lập mẫu và chạy mẫu đó trên Windows:
- Cài đặt GLEW:
- Tải GLEW xuống và giải nén.
- Sao chép các tệp nhị phân từ
$your-glew-directory\bin\Release\x64
vào%SystemRoot%\system32
.
- Cài đặt freeglut:
- Tải freeglut xuống và giải nén.
- Sao chép
$your-freeglut-directory\bin\x86\freeglut.dll
vào%SystemRoot%\system32
.
- Thêm các phần phụ thuộc dự án freeglut:
- Mở
Teapot.sln
trong Visual Studio. - Trong trình đơn, hãy nhấp vào Debug (Gỡ lỗi) > x64 > Local Windows Debugger (Trình gỡ lỗi cục bộ Windows).
- Trong Solution Explorer (Trình khám phá giải pháp), hãy nhấp chuột phải vào GameApplication rồi chọn Properties (Thuộc tính) > C/C++ > General (Chung) > Additional Include Directories (Thư mục bổ sung).
- Thêm
$your-freeglut-dir\include
vào đường dẫn.
- Nhấp vào Ok.
- Chọn Linker (Trình liên kết) > General (Chung) > Additional Library Directories (Thư mục thư viện bổ sung).
- Thêm
$your-freeglut-dir\lib\x64
vào đường dẫn. - Nhấp vào Ok.
- Chọn Linker (Trình liên kết) > General (Chung) > Additional Library Directories (Thư mục thư viện bổ sung).
- Thêm
freeglut.lib
vào đường dẫn. - Nhấp vào Ok.
- Mở
- Thêm các phần phụ thuộc dự án GLEW:
- Trong ngăn Solution Explorer (Trình khám phá giải pháp), hãy nhấp chuột phải vào GameApplication rồi chọn Properties (Thuộc tính) > C/C++ > General (Chung) > Additional Include Directories (Thư mục bổ sung).
- Thêm
$your-glew-dir\include
vào đường dẫn. - Nhấp vào Ok.
- Chọn Linker (Trình liên kết) > General (Chung) > Additional Library Directories (Thư mục thư viện bổ sung).
- Thêm
$your-glew-dir\lib\Release\x86
vào đường dẫn. - Nhấp vào Ok.
- Chọn Linker (Trình liên kết) > General (Chung) > Additional Library Directories (Thư mục thư viện bổ sung).
- Thêm
glew32.lib
vào đường dẫn. - Nhấp vào Ok.
- Chạy mẫu trên Windows:
- Trên thanh công cụ Visual Studio, hãy nhấp vào nút chạy Local Windows Debugger (Trình gỡ lỗi cục bộ Windows).
- Mẫu sẽ có dạng như sau:
AssemblyCode-Link-Objects
Đây là dự án mẫu minh hoạ cách tạo thư viện gốc Android từ tập hợp và mã nguồn C/C++. Đây là các thành phần chính:
AssemblyCode-Link-Objects
: thư viện gốc của Android chính, được tạo từ C++ và mã nguồn tập hợp.StaticLib
: thư viện tĩnh của trình trợ giúp, thư viện này xuất hàmfrom_static_lib_assembly_code_as
.
Dự án hỗ trợ nhiều cấu trúc. Mỗi cấu trúc được hỗ trợ đều có
các tệp nguồn riêng triển khai các hàm được xuất từ StaticLib
.
Bạn chỉ nên đưa vào các tệp nguồn tập hợp cho những nền tảng mà bạn đang xây dựng. Dự án này đưa các tệp tập hợp vào trong bản dựng bằng cách sử dụng
công cụ tạo bản dựng tuỳ chỉnh.
Cách thiết lập và tạo mẫu:
- Trong Visual Studio, hãy xác minh rằng bạn đã định cấu hình các công cụ tạo bản dựng tuỳ chỉnh cho
các tệp tập hợp:
- Trong Solution Explorer (Trình khám phá giải pháp), nhấp chuột phải vào tệp tập hợp rồi nhấp vào Properties (Thuộc tính). Thao tác này sẽ mở ra hộp thoại Properties Pages (Trang thuộc tính) cho tệp.
- Chọn cấu hình và nền tảng, chẳng hạn như All configurations (Tất cả cấu hình) cho Android-arm64-v8a.
- Đảm bảo rằng General (Chung) > Exclude from Build (Loại trừ khỏi bản dựng) được đặt thành No (Không).
- Đảm bảo rằng General (Chung) > Item Type (Loại mục) được đặt thành Custom Build Tool (Công cụ xây dựng tuỳ chỉnh).
- Nhấp vào Apply (Áp dụng) nếu có các thay đổi để áp dụng.
- Đảm bảo rằng
Configuration Properties (Thuộc tính cấu hình) > Custom Build Tools (Công cụ xây dựng tuỳ chỉnh) > Command Line (Dòng lệnh):
đã đặt thành
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
. NDK bao gồm một trình tập hợp riêng cho từng cấu trúc CPU và$(AsToolExe)
liên kết tới trình kết hợp chính xác. Mẫu này sử dụng chuỗi công cụ NDK để tạo cả hai dự án Android x86 và x86_64. Nếu bạn muốn dùng yasm cho nền tảng Android x86_64, hãy dùng$(YasmToolExe)
. - Đảm bảo rằng
Configuration Properties (Thuộc tính cấu hình) > Custom Build Tools (Công cụ xây dựng tuỳ chỉnh) > Outputs (Đầu ra):
đã đặt thành
$(IntDir)%(FileName).o
. Chuỗi này phải được đưa vào trong tuỳ chọn cài đặt Command Line (Dòng lệnh). - Đảm bảo rằng
Configuration Properties (Thuộc tính cấu hình) > Custom Build Tools (Công cụ xây dựng tuỳ chỉnh) > Link Objects (Liên kết đối tượng):
được đặt thành
Yes
.
Ví dụ: tuỳ chọn cài đặt Android-arm64-v8a sẽ tương tự như ảnh chụp màn hình sau đây:
- Tạo bản dựng dự án. Thao tác này sẽ tạo tệp
libAssmeblyCodeLinkObjects.so
:- Mở tệp
AssemblyCode-Link-Objects.sln
. - Trong trình đơn, hãy nhấp vào Build (Xây dựng) > Build Solution (Giải pháp xây dựng).
- Mở tệp
- Để xác nhận rằng các hàm này được xuất đúng cách sang thư viện
Android, hãy dùng công cụ NDK nm.exe:
- Trong dòng lệnh, hãy chuyển đến thư mục mẫu.
- Truy cập vào vị trí thư viện Android
do bản dựng của bạn tạo ra. Vị trí mặc định tương tự với
$sample_dir\$solution_configuration\$solution_platform\$platform
và$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
đối với nền tảng arm64-v8a. - Xác minh rằng phần biểu tượng đã xuất có chứa các hàm bằng cách
chạy lệnh sau:
…\ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only …\Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
Trong đầu ra, bạn sẽ thấy danh sách các ký hiệu bao gồm:
T from_shared_object_assembly_code_as
T from_static_lib_assembly_code_as