当前位置: 首页 > news >正文

教程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。

http://www.cnnetsun.cn/news/55696.html

相关文章:

  • 附件-–-behaviac
  • Windows 7系统下Umi-OCR兼容方案:让老旧设备也能高效文字识别
  • 联想拯救者工具箱完整指南:解锁硬件潜能的一站式解决方案
  • 暗黑3终极自动化辅助工具完整使用指南
  • 网易云音乐扩展引擎:开启个性化音频体验新篇章
  • 【有手就行】LoRA:用你自己的数据来微调大模型,让大模型真正懂你
  • TouchGAL社区搭建完全指南:从零开始构建专属Galgame交流平台
  • BilibiliDown:快速便捷获取B站视频的终极解决方案
  • 如何利用OpenBoardView实现.brd电路板文件的终极查看方案
  • 零基础玩转AssetStudio:Unity资源提取实战手册
  • ThinkPad风扇控制终极指南:TPFanCtrl2实现Windows智能调速
  • 如何在3分钟内为网站添加专业天气显示功能:Weather.js终极指南
  • 终极指南:用Lan Mouse实现跨设备鼠标键盘共享的完整教程
  • 如何快速使用LRCGET:离线音乐批量歌词下载的完整指南
  • Cursor AI Pro功能解锁工具:自动化注册与设备重置解决方案
  • Zotero-GPT插件API配置全流程解析与故障排查
  • Pyarmor解密工具:无需运行即可静态解密Python加密脚本的终极方案
  • 论文AI率太高?3款降AI软件实测对比,去除知网aigc痕迹!
  • 基于微服务架构的悟空人力资源管理系统设计与实现
  • 实测3款论文降AI率工具,一键搞定降AIGC率!
  • 网盘直链下载助手:告别客户端限制,开启高速下载新时代
  • NotepadNext十六进制编辑:二进制数据处理的终极指南
  • 基于微信小程序的在线摄影预约系统毕设
  • FF14自动跳过副本动画插件终极指南
  • 基于微信小程序的社区老年服务系统毕业设计源码
  • 统一场论质量定义方程:数学验证与应用分析
  • 10 Nacos 如何在集群中同步实例信息
  • 精选9款高效AI写作工具,帮助用户快速完成开题报告及学术论文创作。
  • 2025年数字人厂家热销榜单:解锁最佳技术实力与落地方案
  • PlugY终极指南:解锁暗黑2单机模式的7大隐藏功能