You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio 2022中使用AGDK GameActivity/NativeActivity开发跨平台安卓游戏

AGDE 安卓游戏开发配置指南

一、使用AGDK GameActivity的具体步骤

  • 配置项目依赖:在VS项目的安卓平台属性中,进入「链接器→输入」,添加对应架构的game-activity.lib(路径指向你已配置的AGDK依赖目录下的对应库文件)
  • 编写GameActivity入口代码:替换原有NativeActivity入口,使用android_main作为入口点,基于game-activity/native_app_glue/android_native_app_glue.h处理生命周期和窗口事件:
#include <game-activity/native_app_glue/android_native_app_glue.h>

void android_main(struct android_app* app) {
    // 注册应用命令回调
    app->onAppCmd = [](struct android_app* app, int32_t cmd) {
        switch(cmd) {
            case APP_CMD_INIT_WINDOW:
                // 初始化渲染环境(如OpenGL ES上下文)
                break;
            case APP_CMD_TERM_WINDOW:
                // 释放渲染资源
                break;
            // 处理其他生命周期命令
            default:
                break;
        }
    };

    // 主事件循环
    int events;
    struct android_poll_source* source;
    while(ALooper_pollAll(0, nullptr, &events, (void**)&source) >= 0) {
        if(source) source->process(app, source);
    }
}
  • 修改AndroidManifest.xml:将Activity标签的android:name改为com.google.androidgamesdk.GameActivity,添加必要权限(如android.permission.WAKE_LOCK),并通过meta-data指定android.app.lib_name为你的原生库名称
  • 编译运行:选择目标安卓架构(如arm64-v8a),直接部署到设备或模拟器

二、改用NativeActivity的配置方法

  • 移除GameActivity依赖:在VS项目安卓平台的链接器输入中删除game-activity.lib,将头文件替换为标准的android_native_app_glue.h
  • 编写NativeActivity入口:使用标准android_main入口,基于android_native_app_glue处理事件,逻辑与GameActivity入口类似,但无需GameActivity特定扩展
  • 更新AndroidManifest.xml:将Activity的android:name改为android.app.NativeActivity,保持android.app.lib_name指向你的原生库,按需配置权限
  • 验证依赖:确保AGDK依赖目录中的android_native_app_glue.lib可被链接器找到

三、分离引擎与应用,实现Windows/安卓双平台兼容(参考teapot示例)

1. 拆分项目结构

  • 引擎静态库项目:封装跨平台核心逻辑(渲染、输入、资源管理等),代码仅依赖抽象接口,不包含平台特定API
  • Windows应用项目:引用引擎静态库,实现Win32平台的入口(WinMain)、窗口创建、输入适配等代码
  • 安卓AGDE项目:引用引擎静态库,实现安卓平台的android_main入口、GameActivity/NativeActivity事件适配代码

2. 实现跨平台抽象层

  • 定义抽象接口:如IWindow、IInput,引擎核心仅调用接口方法
  • 平台专属实现:Windows端基于Win32 API实现接口,安卓端基于AGDK的Activity框架实现接口
  • 条件编译区分平台:
#include "EngineCore.h"

#ifdef _WIN32
#include "Win32PlatformImpl.h"
#elif __ANDROID__
#include "AndroidPlatformImpl.h"
#endif

int main() {
    IWindow* window = CreatePlatformWindow();
    EngineCore engine(window);
    engine.RunMainLoop();
    delete window;
    return 0;
}

3. 统一编译配置

  • 引擎库项目:设置通用编译选项(如C++17标准、统一警告等级),避免平台特定配置
  • 应用项目:各自配置平台专属编译/链接规则,安卓项目保留已配置的AGDK包含目录和依赖目录,Windows项目配置Win32相关依赖

内容的提问来源于stack exchange,提问作者taku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:40:17