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")

4. 在tutorial_11项目中,也有自己的CMakeLists.txt,这个文件用于示范如何编译构建自己的项目,如下图所示:

打开该文件,可以看到我们将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:/”字符串开头,如下代码所示:

const char* InitBehavic()

{

LOGI("InitBehavic\n");

#if !BEHAVIAC_CCDEFINE_ANDROID

behaviac::Workspace::GetInstance()->SetFilePath("../tutorials/tutorial_11/cpp/exported");

#else

behaviac::Workspace::GetInstance()->SetFilePath("assets:/behaviac/exported");

#endif

behaviac::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++端,如下代码所示:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// Example of a call to a native method

TextView tv = (TextView) findViewById(R.id.sample_text);

tv.setText(TestMain(getApplication().getAssets()));

}

public native String TestMain(android.content.res.AssetManager assetManager);

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

extern "C"

JNIEXPORT jstring JNICALL

Java_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();

return env->NewStringUTF(str.c_str());

}

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

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

Android编译构建,教程11:使用Android Studio编译构建behaviac相关推荐

  1. Android基础入门教程——7.4 Android调用WebService

    Android基础入门教程--7.4 Android调用WebService 标签(空格分隔): Android基础入门教程 本节引言: 经过前面的学习,数据请求,数据解析,文件上传下载等,应该满足大 ...

  2. Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!)

    今天我们要写一下Android Widget的开发,由于快点凌晨,我就不说的太具体了,同志们就模仿吧!首先看一下效果图: 下面是Demo的详细步骤: 一.新建一个Android工程命名为:Widget ...

  3. Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!

    今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三) 查看第三课,这样跟容易方便你的理解! 在xml 文件里定义控件的属性,我们已经习惯了android:at ...

  4. 为什么Android项目mainactivity中有一个变量R_【Android开发入门教程】二.Android应用程序结构分析!...

    一.新建HelloWorld项目: 1.打开Eclipse,点击"File"->"New"->"Project"-Android ...

  5. mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22

    Linux CentOS6.5下编译安装MySQL 5.6.22[给力详细教程] 一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库(安装过程注意有没出错) yum install gcc ...

  6. android vlc使用教程_在android项目中使用VLC

    VLC是pc时代流媒体播放器的标杆,相信大家都有接触.VLC的流媒体部分是基于开源的live555库.live555的代码我稍微看过一些,基于C++的,说实话,代码写的有点乱,不太符合一个开源库的档次 ...

  7. Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!

    大家好,我们这一节讲一下,Android获取Ip的一些方法,在我们开发中,有判断手机是否联网,或者想获得当前手机的Ip地址,当然WIFI连接的和 我们3G卡的Ip地址当然是不一样的. 首先我尝试了如下 ...

  8. 最新Android基础入门教程目录(完结版)

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  9. 2015年最新Android基础入门教程目录(完结版)

    2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全 ...

  10. android项目开发教程,Android项目开发教程

    Android项目开发教程 编辑 锁定 讨论 上传视频 Android项目开发教程 书    名 Android项目开发教程 作    者 车金庆.何征天.李琳.严正宇.周凌翱 类    别 图书&g ...

最新文章

  1. Linux【命令】修改文件内容
  2. POJ3233不错的矩阵(矩阵套矩阵)
  3. 【Python-ML】聚类的性能评价指标
  4. 字典-字典的增删改查常用操作
  5. window.atob()与window.btoa()方法实现编码与解码
  6. 美汽车销售商使用RFID汽车,加快销售速度
  7. 如何借助vsftpd在Linux上构建安全的FTP服务?
  8. python 存redis失败无提示_python如何关闭redis
  9. 有人说苹果手机的CPU非常强大,为什么会这样?苹果cpu又是谁设计的?
  10. ocr原理 oracle,Oracle技术之RAC Voting disk和OCR的管理
  11. 学计算机专科好还是牙医好,孩子明年高考,牙科、计算机两个专业,怎么选?...
  12. Qt 安装组件及其说明(by shany shang)
  13. android开发笔记之xml矢量图片
  14. 极点五笔特殊符号输入方法
  15. Python学习第二课-----绘制股票K线图(不使用mpl_finance包)
  16. 如何修改Excel中csv文件编码格式
  17. 迟来的2015年终总结
  18. 《C语言程序设计》单元总结与练习题
  19. Java中的实体类(VO、PO、DO、DTO、BO、QO、DAO、POJO)
  20. EtherCAT的从站配置

热门文章

  1. matlab多种显示格式一起用,[转载]MATLAB支持的几种图像文件格式
  2. mysql zf_ZF 连接 Mysql
  3. ai google 风格化图像_谷歌 AI 新方法:可提升 10 倍图像识别效率,关键还简单易用...
  4. mysql存储过程返回结果集_原来MySQL的存储过程也可以这么玩?
  5. JDBC:深入理解PreparedStatement和Statement
  6. Java学习笔记之设计模式(2)工厂模式
  7. Introduction to Computer Networking学习笔记(十三):传输层知识点学习总结
  8. mysql分日汇总填充0_将记录按小时或按日分组,并在mysql中填充零或空的空白
  9. SaaS、PaaS、IaaS典型的云计算解决方案架构
  10. Cookie、Session、Token、RefreshToken