云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云数据库_饥荒服务器启动失败_免费

小七 141 0

移动应用与Jenkins的持续集成:Android NDK构建说明

最近,当我在博客上讨论如何为Android移动应用程序进行持续集成时,我意识到我忘记了一个重要的细节:如何配置Jenkins来执行使用Android NDK(Native Development Kit)的Android应用程序的构建。这不是适用于每一个Android应用程序的东西,但是有一些类型的应用程序受益于使用本地代码语言,如C/C++,如这里所描述的。DooFISH应用程序的Android,这是基于经典的StdFISH象棋引擎,我一直在这些博客中作为一个例子,是一个例子:原始的StdFISH项目是用C/C++构建的,DooDISFISH应用的一些关键组件被实现为本地库,并通过Android调用JNI.如果你是一个Java程序员,不希望编写任何本机代码(但想知道如何使应用程序正确构建和运行),那么您真正需要知道的是以下几点:与SDK不同,Android NDK并不是由Jenkins Android仿真器插件自动下载的,所以您需要配置Jenkins将其下拉到构建工作区中。有一个很好的例子可以让Jenkins插件做到这一点,我很乐意写一个-在这种情况下,我会更新这个博客的细节。同时,使用executeshell和envirect插件来完成这项工作相当容易,就像下面这样例子:你可以从Android NDK下载页面找到适合您的目标环境(Windows/MacOS/Linux)的正确下载链接。请注意,我们是如何使用内置的Jenkins$WORKSPACE环境变量来设置一个自定义环境变量(ANDROID\u NDK)来指向NDK安装的位置。然后你只需要添加一个自定义_规则.xml文件-标准Android Ant生成.xml包含一个自动包含它的占位符-引用它,如:name="custom_rules"default="-pre-build">文件="本地.属性" />environment="env"/>名称="ndk.dir公司"值="${安卓环境}"/>名称="命令行"value="ndk build"/>name="-pre-build">可执行文件="${ndk.dir公司}/${命令行}"failonerror="true">线路="/>name="-pre-clean">可执行文件="${ndk.dir公司}/${命令行}"failonerror="false">line="clean"/>这将使NDK build实用程序(NDK build)在项目被清理/构建时运行。如果您在本例的控制台输出中查看-pre-build Ant目标,就可以看到结果内部版本。本机DroidFish应用程序中的代码如果您有兴趣了解本机代码在DroidFish应用程序中的实际使用方式,使用Eclipse/ADT打开DroidFish项目(我在GitHub上有一个副本),然后查看DroidFish/jni文件夹——这是原生Android代码的默认位置。打开安卓.mk生成文件,您将看到有三个本机代码组件,它们是用DroidFish构建的/鳕鱼:这是主象棋引擎(应用程序的"大脑"),它是作为一个单独的32位ELF可执行文件构建的,用于使用include$(BUILD_executable)指令,并复制到DroidFish/assets文件夹中以包含在.apk中存档.gtb.so:这是一个管理Gaviota Endgame表库的共享库-这些是提供计算机的特殊数据库每一个可能的结局都有一定数量的完美信息(表格库),使用include$(BUILD_SHARED_库)构建指令.nativeutils.so:另一个,较小的共享库,提供两个实用程序函数,用于设置stockfish的权限和属性引擎。那个加载了两个共享库系统加载库()和stockfish引擎启动java.lang.ProcessBuilder. 您可以看到这些本机代码组件(使用安卓.mk在这个Eclipse/ADT的屏幕截图中项目:Mark Prichard,产品管理高级总监