news 2026/5/1 7:56:58

教程11:使用Android-Studio编译构建--behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
教程11:使用Android-Studio编译构建--behaviac

原文
Android Studio是一个为Android平台开发程序的集成开发环境,可供开发者免费使用。需要在官网下载并安装最新版的Android Studio,然后继续后文的编译构建。

可以参考源码包中tutorials/tutorial_11的做法类似构建自己的项目,具体步骤如下:

1. 新建自己的项目。这里我们直接打开已有的behaviac_android项目,如下图所示:

2. 双击打开build.gradle文件,如下图所示:

3. 在打开的文件中,修改cmake文件的相对路径,如下代码所示:

externalNativeBuild { cmake { path "../../../../CMakeLists.txt" } }

这是由于CMakeLists.txt所在的路径在源码包的最顶级,如下图所示:

需要参考上面的CMakeLists.txt,用于编译构建behaviac组件。在这个CMakeLists.txt文件中,还需要添加自己的项目,这里是tutorial_11来做示范,如下代码所示:

add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_11/cpp")

打开该文件,可以看到我们将tutorial_11作为一个lib来编译构建,如下代码所示:

if (BEHAVIAC_ANDROID_STUDIO) add_library(tutorial_11 SHARED ${BTUNITTEST_INC} ${BTUNITTEST_SRC}) else() # add the executable add_executable(tutorial_11 ${BTUNITTEST_INC} ${BTUNITTEST_SRC}) endif() target_link_libraries (tutorial_11 libbehaviac ${CMAKE_THREAD_LIBS_INIT})

5. 新建Android所需的assets目录,将behaviac编辑器导出的行为树和类型信息文件全部放在该目录中,如下图所示:

6. 在tutorial_11.cpp文件的InitBehavic()方法中,调用了Workspace::SetFilePath()接口,设置行为树加载路径,必须要以“assets:/”字符串开头,如下代码所示:

constchar*InitBehavic(){LOGI("InitBehavic\n");#if!BEHAVIAC_CCDEFINE_ANDROIDbehaviac::Workspace::GetInstance()->SetFilePath("../tutorials/tutorial_11/cpp/exported");#elsebehaviac::Workspace::GetInstance()->SetFilePath("assets:/behaviac/exported");#endifbehaviac::Workspace::GetInstance()->SetFileFormat(behaviac::Workspace::EFF_xml);return"InitBehavic\n";}

7. 在项目的MainActivity.java文件中,加载behaviac_gcc_debug和tutorial_11_gcc_debug库,如下代码所示:

static{System.loadLibrary("behaviac_gcc_debug");System.loadLibrary("tutorial_11_gcc_debug");}

8. 在onCreate()方法中调用C++的方法(这样处理仅供示范),并将AssetManager实例传递给C++端,如下代码所示:

protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Example of a call to a native methodTextViewtv=(TextView)findViewById(R.id.sample_text);tv.setText(TestMain(getApplication().getAssets()));}publicnativeStringTestMain(android.content.res.AssetManagerassetManager);

9. 在tutorial_11.cpp文件中,实现了上一步中的TestMain()方法,调用接口Workspace::SetAssetManager()设置AssetManager实例,如下代码所示:

extern"C"JNIEXPORT jstring JNICALLJava_com_tencent_behaviac_behaviac_1android_MainActivity_TestMain(JNIEnv*env,jclass cls,jobject assetManager){AAssetManager*mgr=AAssetManager_fromJava(env,assetManager);BEHAVIAC_ASSERT(mgr);behaviac::CFileManager::GetInstance()->SetAssetManager(mgr);std::string str=TestBehaviac();returnenv->NewStringUTF(str.c_str());}

10. 编译构建APK包,并安装运行,结果如下图所示:

本教程相关的工作区和代码工程详见源码包的目录tutorials/tutorial_11。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:00:41

零基础搭建RustDesk远程控制服务器:5步实现企业级部署方案

零基础搭建RustDesk远程控制服务器:5步实现企业级部署方案 【免费下载链接】rustdeskinstall Easy install Script for Rustdesk 项目地址: https://gitcode.com/gh_mirrors/ru/rustdeskinstall 还在为复杂的远程控制软件配置而烦恼?RustDesk一键…

作者头像 李华
网站建设 2026/5/1 3:53:51

OpenBoardView:免费开源的.brd电路板文件终极查看方案

OpenBoardView:免费开源的.brd电路板文件终极查看方案 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 在电子设计领域,.brd文件作为电路板设计的核心格式,其查看与分析工…

作者头像 李华
网站建设 2026/5/1 2:44:26

百度网盘下载优化指南:提升传输效率的方法

百度网盘下载优化指南:提升传输效率的方法 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的下载效率感到困扰吗?看着文件缓慢传输&…

作者头像 李华
网站建设 2026/5/1 3:46:36

飞桨ERNIE-4.5-VL-28B-A3B模型深度解析:多模态交互新范式与部署实践指南

在人工智能多模态交互领域,百度飞桨平台近期推出的ERNIE-4.5-VL-28B-A3B-Thinking模型引发行业广泛关注。作为兼顾视觉理解与文本生成的新一代大模型,该产品不仅延续了ERNIE系列在中文语义理解上的技术优势,更通过创新的异构MoE架构实现了跨模…

作者头像 李华
网站建设 2026/5/1 3:47:21

TrafficMonitor插件配置完全攻略:3大技巧打造个性化系统监控中心

还在为Windows任务栏单调乏味而烦恼吗?想象一下,在同一个界面上同时查看网络速度、硬件温度、天气信息和股票行情——这不再是梦想!TrafficMonitor插件系统就是你的实用工具箱,它能将普通任务栏升级为功能丰富的个人监控中心。 【…

作者头像 李华
网站建设 2026/5/1 4:46:13

WaveTools鸣潮帧率解锁技术解析与性能优化实践

WaveTools鸣潮帧率解锁技术解析与性能优化实践 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 随着鸣潮1.2版本的重大更新,游戏引擎架构进行了深度重构,其中帧率控制模块的数据库结…

作者头像 李华