BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

来自Google的新工具集,有助于开发基于Android的C/C++应用程序

| 作者 Sergio De Simone 关注 12 他的粉丝 ,译者 李士窑 关注 0 他的粉丝 发布于 2014年12月31日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Fplutil是一套来自Google乐趣推进实验室的程序库和工具,该套工具旨在使得开发基于Android的C/C++应用变得更加容易。

Fplutil由四个主要部分构成:build_all_android.py、buildutil、libfplutil和android_ndk_perf.py。

build_all_android.py

该构建脚本使得开发者能够通过命令行构建、安装和运行原生应用程序。该脚本可以基于Android NDK构建C/C++应用程序,有助于实现构建的自动化,并简化开发者的编译/运行循环流程。

该脚本还支持通过命令行设定构建的相关设置,如设置调试模式、优化级别等等。并且它还支持多设备的同时使用。

buildutil

buildutil是一套Python模块,这些模块能够简化使用编译工具CMake编写持续集成自动化脚本的过程。使用Buildutil构建/归档Android应用程序的例子如下:

  1. 第一步是创建一个android.BuildEnvironment实例,该实例用来执行剩余部分的构建操作,代码如下:
    parser = argparse.ArgumentParser()buildutil.android.BuildEnvironment.add_arguments(parser)
    args = parser.parse_args()
    env = buildutil.android.BuildEnvironment(args)
    
  2. 一旦该步完成,接下来要做的是使用支持构建原生(C/C++)组件的ndk-build和支持构建Java组件和APK的构建工具Ant来构建应用程序,代码如下。
    (rc, errmsg) = env.build\_all()
  3. 最后,APK文件就可以归档为一个ZIP文件
    env.make\_archive([‘apks'],‘output.zip',exclude=[‘objs', ‘objs-debug'])

除了支持基于Android的NDK构建外,该工具还支持Linux、OS X和Windows环境下的构建。

libfplutil

libfplutil包含着一个原生的Android NDK模块,该模块构成了两个静态程序库,即libfplutil_main和libfplutil_print,它们将使C/C++应用程序的编写变得更加容易:

  • libfplutil_main实现了一个Android NativeActivity的入口点android_main(),该入口点调用了传统C/C++的入口点int main(),这样就使得使用入口点int main()(就像任何一个标准的C应用程序一样)编写应用程序、连接到该程序库(参考Linking)并使其运行在Android上成为可能。
  • libfplutil_print实现了一套功能的包装,这些功能能够将信息写到标准输出流。这就使得使用printf往终端环境进行写操作的应用程序能够将自己的输出重定向到Android日志中。

通过连接到libfplutil,典型的Hello,World程序无需任何改变就能够在Android上进行编译及运行。

android_ndk_perf.py

android_ndk_perf.py是一个桌面工具,该工具能够帮助原生(C/C++)开发者测量基于Android的应用程序的CPU利用率,从而指导他们的优化工作。Android_ndk_perf能够运行在开发者的工作站上,以收集运行在Android设备上应用程序的运行轨迹。应用程序的轨迹被收集后,就能够使用Linux Perf的命令来检测收集的数据,或者生成一个在Web浏览器中显示、用于检测数据的HTML可视化视图。

Libfplutil可从GitHub上下载,并且GitHub上还提供了相关文档

乐趣推进实验室是一个Google的团队,该团队致力于推进基于Android和其他平台下的游戏开发。今年早些时候,他们开源了一个2D物理引擎LiquidFun 1.1,该引擎包含流体模拟功能。

查看英文原文:New Tools from Google to Help Developing C/C++ Applications on Android


感谢邵思华对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT