こんばんは。
Klabさんの素晴らしいゲームエンジンPlaygroundOSSが個人的に難しいと話題に
2014/12/7
とりあえずsample表示ぐらいはしたかった。
という事で現在の進捗
0.研究環境&対象OS
Mac OS X 10.9.5
Android Studio 1.0 RC1
Android NDK 10d
=============
Nexus5
Android 5.0 Lollipop
ADTは今年のI/O的に積極的にさけた方が良いと思っているので
早くAndroidStudio対応Docくだしあ><
1.いろいろインストール
- Android NDK より Mac OS X 64-bit android-ndk-r10d-darwin-x86_64.bin
- developer.android.com よりAndroid Studio (tools.android.comで最新版は手に入る)
- Path を通す
export ANDROID_NDK_ROOT="/{落とした場所}/android-ndk-r10d"
PATH=$PATH:$ANDROID_NDK_ROOT
上の2行を.profileというファイル名で~/の中にかいておく。
公式DocではSDKのインストールをしていたがAndroidStudioを使うのでいりません。
とりあえず
$ndk-build
と入力して「Android NDK: Could not find application project directory !」的な結果が帰ってきたら大丈夫です。
2.cloneする
とりあえずgitは入れておこう$git clone https://github.com/KLab/PlaygroundOSS.git
3.Buildする
Playgroundの中に入る$cd /{落とした場所}/PlaygroundOSS/Engine/porting/Android/GameEngine-android
permissionの設定
$chmod +x ./build.pybuild実行
$./build.py --rebuild --project SampleProject(イミワカンナイ感あるがSampleProjectでないと怒られる。イミワカンナイ)
4.AndroidStudioで開く
AndroidStudio 起動 -> Import Project ->
/{落とした場所}/Engine/porting/Android/GameEngine-androidを選択
/{落とした場所}/Engine/porting/Android/GameEngine-androidを選択
当然いい感じに開ける。
とりあえず、もろもろ準備
local.propertiesにsdkの場所が書いてあるはずなのでその下にndkの場所も追加する。
ndk.dir=/{落とした場所}/android-ndk-r10dandroid-ndk-r10dGradeを走らせる。こける。
箇所1
修正前のコード
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
修正後のコード
dependencies {
classpath 'com.android.tools.build:gradle:0.14.4'
}
箇所2
修正前のコードcompileSdkVersion 17
buildToolsVersion "18.1.0"
修正後のコード
compileSdkVersion 21
buildToolsVersion "21.0.2"
箇所3
修正前のコード
修正前のコード
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {修正後のコード
pkgTask -> pkgTask.jniDir new File(projectDir, 'libs')
}
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {多分jniDirがないだかで怒られるはず。
pkgTask ->
pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add new File(projectDir, 'libs')
}
で、上の修正した後gradeを走らせると落ちる。落ちた。
/*今回ごり押しでやったので落ち着いたら別の方法を載せる予定*/
なので落ちた部分をコメントアウトしてgradeはしらせて成功したあとコメントアウトを外してもう一回gradeを走らせた。
コメントアウトした箇所は
/*である。 多分Buildはできたはず。
if(new File(projectDir, "jni").exists()){
tasks.withType(Compiler) {
compileTask -> compileTask.dependsOn ndkBuild
}
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
pkgTask ->
pkgTask.jniFolders = new HashSet<File>()
pkgTask.jniFolders.add new File(projectDir, 'libs')
}
clean.dependsOn 'ndkClean'
clean.dependsOn 'libsClean'
}
*/
5.Assetsの追加
$cd /PlaygroundOSS/Tutorial/01.SimpleItem/.publish/android/ $zip -r -0 /PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/AppAssets.zip ./* $echo -n "1" > /Playground0SS/Engine/porting/Android/GameEngine-android/assets/version ./*
できた、AppAssets.zipとversionをAndroidStudio上でassetsというディレクトリを作って放り込む。階層はGameEngine-android直下にした。
6.コードの修正
やはりか、という感じでエラーが起きる。イミワカンナイ!ダレカタスケテー!
Process: klb.android.GameEngine, PID: 31119 java.lang.RuntimeException: createContext failed: EGL_BAD_MATCH
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1192)
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1183)
at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1033)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1400)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)
で。このエラーを解決するのに時間を無駄にしたのだが結論は
klb.android.GameEngine.GameGLSurfaceView内の54行目あたりにある
PFInterface pfif = PFInterface.getInstance();int glver = pfif.getGLVersion();setEGLContextClientVersion(glver);
で、glverが-1を返していた。
setEGLContextClientVersion(2);のコメントアウトを外したら動いた。
画面が黒い。Assetが表示されない<-今ココ
という訳でダレカタスケテー!
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1192)
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1183)
at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1033)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1400)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)
0 件のコメント:
コメントを投稿