読者です 読者をやめる 読者になる 読者になる

Cocos2d-xでGradleを使う

Cocos2d-x

Cocos2d-x And Gradle - 使用Gradle编译Cocos2-dx - 林国锋个人博客

ほとんどこれを日本語にしただけなので、中国語読める人はこっち読んだほうが早い。

前提

  • Cocos2d-x3.0(Stable)
  • Gradle初心者
    • Androidの開発環境周りよくわからない
    • 説明は間違ってるかもしれない
  • OSXで作業する

Gradle使えるようにする

brew update
brew install gradle

gvm使うのがオシャレらしいけど、カジュアルな感じにbrewを使う。

gradle設定する

cd TestApp
gradle init

すると、必要なファイルが生成される

Cocos2d-xのandroidプラグインをgradleライブラリにする

cocos2d/cocos/2d/platform/android/java/build.gradleを作って、コピペする。

apply plugin: 'android-library'

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
}

android {
  compileSdkVersion 14
  buildToolsVersion "19.1.0"

  sourceSets {
    main {
      manifest.srcFile 'AndroidManifest.xml'
      java.srcDirs = ['src']
      resources.srcDirs = ['src']
      aidl.srcDirs = ['src']
      renderscript.srcDirs = ['src']
      res.srcDirs = ['res']
      assets.srcDirs = ['assets']
    }
  }
}

compileSdkVersionとかは自分のアプリに合わせて変える。 buildToolsVersionは、その時の最新バージョン指定したほうが良い。*1

ビルドスクリプトを書く

gradle initで生成されたbuild.gradleに設定を書いていく

project.ext {
  androidRoot = 'proj.android'
  env = System.getenv()
}

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.10.+'
  }
}

apply plugin: 'android'

repositories {
  mavenCentral()
}

dependencies {
  compile fileTree(dir: androidRoot + '/libs', include: '*.jar')
  compile fileTree(dir: androidRoot + '/libs/armeabi', include: '*/so')
  compile project(':cocos2d:cocos:2d:platform:android:java')
}

task ndkBuild(type: Exec) {
  commandLine androidRoot + '/build_native.py'
}

android {
  compileSdkVersion 14
  buildToolsVersion "19.1.0"

  defaultConfig {
    minSdkVersion 9
    targetSdkVersion 14
  }

  sourceSets {
    main {
      manifest.srcFile androidRoot + '/AndroidManifest.xml'
      java.srcDirs = [androidRoot + '/src']
      resources.srcDirs = [androidRoot + '/src']
      aidl.srcDirs = [androidRoot + '/src']
      renderscript.srcDirs = [androidRoot + '/src']
      res.srcDirs = [androidRoot + '/res']
      assets.srcDirs = [androidRoot + '/assets']
      jniLibs.srcDirs = [androidRoot + '/libs']
    }
  }
}

ビルド設定を書く

gradle initで生成されたsettings.gradleに上で書いた2つの設定を読み込ませる。

include ':cocos2d:cocos:2d:platform:android:java'
include ':proj.android'

rootProject.name = 'TestApp'

ここまで書いたらgradle ndkBuildと、gradle標準のビルドコマンドが実行できるようになる。

proj.androidの中でgradle initしたほうがオシャレっぽいけど、directoryさかのぼってincludeする方法が分からなかったのでこんな感じになってる。方法がわかったら編集する。

あと、build_native.py使わないでビルドしたいので、別の機会にやる。

参考

*1:バージョン指定しないでOKにしたいけど方法が分からない