PlaygroundOSSを使ってAndroidのアプリ作成
動いたので最初から
Playgroundとは
「Playground」は、マルチプラットフォームな2D/2.5Dゲームを効率的に開発するためのフレームワークです。KLabのゲームタイトルでは株式会社ブシロード(本社:東京都中野区、代表取締役社長:木谷高明)と共同開発した「ラブライブ!スクールアイドルフェスティバル」と、グローバル向けに開発した「Rise to the Throne(ライズ・トゥ・ザ・スローン)」(※1)に使用されています。
とりあえずスクフェスに使われているゲームエンジン。 決してXcodeの中にあるPlaygroundではない
0.研究環境&対象OS
Mac OS X 10.9.5
Android Studio 1.0 RC1
Android NDK 9d
=============
Nexus5
Android 5.0 Lollipop
ADTは今年のI/O的に積極的にさけた方が良いと思っているので
早くAndroidStudio対応Docくだしあ><
1.いろいろインストール
Android NDK r10以降で行うとこける事がわかったのでr9代ので行う。とはいえ公式サイトには最新版のリンクしか無いので
/*
今は繋がらない
以下のサイトを参考にした。Where do I find old versions of Android NDK? - Stack Overflow
URL 今は繋がらない
https://dl.google.com/android/ndk/android-ndk-r9d-derwin-x86_64.zip
こっちは繋がった 2015/03/20
https://dl.google.com/android/ndk/android-ndk-r9e-darwin-x86_64.tar.bz2
2015/6/11
今現在、NDK r9を落とせる場所が見当たらないです……
で、NDK r9dをダウンロード。
Path を通す
export ANDROID_NDK_ROOT="/{落とした場所}/android-ndk-r9d" PATH=$PATH:$ANDROID_NDK_ROOT
上の2行を.profileというファイル名で~/の中にかいておく。
公式DocではSDKのインストールをしていたがAndroidStudioを使のでいらないと思う。(最近は別にインストールするのか?)
とりあえず
$ ndk-build -v GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for x86_64-apple-darwin
こんな感じなら問題ない
2.cloneする
とりあえずgitは入れておこう
$git clone https://github.com/KLab/PlaygroundOSS.git
3.buildする
中に入って
cd PlaygroundOSS/Engine/porting/Android/GameEngine-android/
権限かえて
$chmod +x ./build.py
build実行
$./build.py --rebuild --project SampleProject
とりあえずSampleProjectと言う名前にしておくと良い)
4.AndroidStudioで開く
AndroidStudio 起動
最初の画面で
Import project
当然いい感じに開ける。しかし現状問題ばかりなのでいろいろ修正する。
1. build.gradleの変更
dependencies { classpath 'com.android.tools.build:gradle:0.6.+' }
gradleのバージョンが古いと怒られるので
dependencies { classpath 'com.android.tools.build:gradle:0.14.+' }
に変更する
compileSdkVersion 17 buildToolsVersion "18.1.0"
古いので
compileSdkVersion 21 buildToolsVersion "21.0.0"
最新版に書き換える
ここで、jniDirなんて知らないと怒られる。Gradle+Androidプラグイン(0.7以降)でNDKプロジェクトをビルドする - やらなイカ?
上のサイトの方でいい感じに対応が書かれているがPlaygroundのファイル構造が対応していないので
全部を書き換えるのは面倒である。
と言う事で
task ndkBuild(type:Exec) { commandLine 'ndk-build', '-j' } task ndkClean(type:Exec) { commandLine 'ndk-build', 'clean' } task libsClean(type:Exec) { commandLine 'rm', '-rf', 'libs/armeabi', 'libs/armeabi-v7a', 'libs/x86', 'libs/mips' } if(new File(projectDir, "jni").exists()){ tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniDir new File(projectDir, 'libs') } clean.dependsOn 'ndkClean' clean.dependsOn 'libsClean' }
を以下だけ残して削除する。以下の分が無いとlibsを読み込んでくれない
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet<File>() pkgTask.jniFolders.add new File(projectDir, 'libs') }
5.Assetsの追加
TODO Windows上の作業を書き込む
$cd /PlaygroundOSS/Tutorial/01.SimpleItem/.publish/android/ $zip -r -0 /PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/AppAssets.zip ./* $md5 AppAssets.zip | cut -d "=" -f 2 | sed -e 's/ //g' > /Playground0SS/Engine/porting/Android/GameEngine-android/assets/version ./*
assetsと言うフォルダを作成し、中にAppAssets.zipとversionと言うファイルを入れる。
versionの中にはAppAssets.zipのmd5を書き込む
(AppAssetsを更新したらversionの中も書き込まなければ読み込まれない)