目的:

  • 持续集成,保证代码质量
  • 自动编译和发布Android应用的测试版本

系统环境:

  • Ubuntu 12.04.3 LTS
  • Java/OpenJDK 1.6.0_27
  • Jenkins 1.544

项目配置:

  • cocos2d-x-3.0Beta
  • android sdk/adt-bundle-linux-x86-20131030
  • android-ndk-r9c

只要JDK没有问题,Jenkins的安装很简单,通过Jenkins官方推荐apt-get安装即可。由于我们源代码版本控制用的GitHub,需要安装对应的Jenkins插件。另外,我们还用到了TestFlight以及HipChat插件,分别用于发布测试包和消息提醒。这里记录一些重要的步骤和常见问题。

配置源代码仓库链接

我们使用了GitHub私有仓库,由于需要授权,需要给jenkins用户创建公私钥,这里可以参考GitHub的帮助,可用 sudo -iu jenkins 切换帐号操作

自定义job的空间目录

这个可以在高级设置里面修改,主要是为了cocos2d-x默认的项目配置(需要放到cocos2d-x项目二级子目录中) 定制自己的项目目录

配置Cocos2d-X的编译脚本

由于jenkins用户是一个service帐号,直接在脚本中加入需要的环境变量。为了使编译脚本能正常使用类库,先进入android项目目录再执行编译脚本

#!/bin/sh
export NDK_TOOLCHAIN_VERSION=4.8
export NDK_ROOT=/var/lib/diggerlab/android-ndk-r9c
export ANDROID_SDK_ROOT=/var/lib/diggerlab/adt-bundle-linux-x86-20131030/sdk
export COCOS2DX_ROOT=/var/lib/diggerlab/cocos2d-x-3.0beta
export PATH="${PATH}:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools"
cd proj.android && sh build_native.sh

调用Ant编译项目和打包Apk

ant clean debug

手动指定build文件:

proj.android/build.xml

以及参数:

sdk.dir=/mnt/diggerlab/adt-bundle-linux-x86-20131030/sdk

常见问题

  1. Unable to resolve project target ‘android-XX’

需要安装target的SDK平台工具,在命令行可以使用如下完成:

android update sdk --no-ui

如果不想安装所有SDK,可以加filter参数过滤,参考这个问答

  1. sdk.dir is missing

需要调用android工具update项目配置,获取sdk路径,也可以直接指定参数(见上述ant配置)

  1. NDK can’t find the application directory

Jenkins在Job的根目录运行,需先进入proj.android,然后在执行编译脚本

  1. E: Sub-process /usr/bin/dpkg returned an error code (1)

    cd /var/lib/dpkg sudo mv info info.bak sudo mkdir info

其他可能出现问题的地方

  • 保证andoird ndk,jdk都是对应版本(64位等)
  • 解决代码大小写
  • openjdk不是jdk

更新记录

  • Cocos2d-X 3.0 Beta已发布,升级后自己的项目目录位置可以任意指定。(18 Jan 14@22:00 )