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 应用程序的例子如下:
- 第一步是创建一个 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](http://google.github.io/fplutil/libfplutil_overview.html) 包含着一个原生的 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 日志中。 {1} 通过连接到 libfplutil,典型的 Hello,World 程序无需任何改变就能够在 Android 上进行编译及运行。 {1} ## android\_ndk\_perf.py {1} android\_ndk\_perf.py 是一个桌面工具,该工具能够帮助原生(C/C++)开发者测量基于 Android 的应用程序的 CPU 利用率,从而指导他们的优化工作。Android\_ndk\_perf 能够运行在开发者的工作站上,以收集运行在 Android 设备上应用程序的运行轨迹。应用程序的轨迹被收集后,就能够使用 Linux Perf 的命令来检测收集的数据,或者生成一个在 Web 浏览器中显示、用于检测数据的 HTML 可视化视图。 {1} Libfplutil 可从 [GitHub](http://google.github.io/fplutil) 上下载,并且 GitHub 上还提供了 [相关文档](http://google.github.io/fplutil/index.html)。 {1} 乐趣推进实验室是一个 Google 的团队,该团队致力于推进基于 Android 和其他平台下的游戏开发。今年早些时候,他们开源了一个 2D 物理引擎 [LiquidFun 1.1](http://google-opensource.blogspot.com.es/2014/07/flowing-into-your-games-liquidfun-11.html),该引擎包含流体模拟功能。 {1} ** 查看英文原文:**[New Tools from Google to Help Developing C/C++ Applications on Android](http://www.infoq.com/news/2014/12/fplutil-cpp-android) {1} - - - - - - {1} 感谢 [邵思华](http://www.infoq.com/cn/author/%E9%82%B5%E6%80%9D%E5%8D%8E) 对本文的审校。 {1} 给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina))或者腾讯微博([@InfoQ](http://t.qq.com/infoqchina))关注我们,并与我们的编辑和其他读者朋友交流。
评论