AndEngineExamplesのビルド

IMG_0808-400x300.jpg

AndEngineExamples

AndEngineを利用したサンプルアプリであるAndEngineExamplesをビルドし、Nexus7で動かすまでを説明します。

  • AndEngineExamples

    • GitHub: https://github.com/nicolasgramlich/AndEngineExamples AndEngineExamplesは実装サンプル数が非常に豊富で、起動するとまず以下のカテゴリメニューが表示されます。括弧内の数字は、各々のカテゴリ配下のサンプル数。なななんとぜんぶで84サンプル。すごい。AndEngineでどんな事が出来るのかを知るにはうってつけです。
  • AndEngineExamples

    • Simple (5)
    • Modifier & Animation (8)
    • Touch (7)
    • ParticleSystems (3)
    • Multiplayer (3)
    • Physics (8)
    • Text (7)
    • Audio (3)
    • Advanced (3)
    • Post-Processing (2)
    • Backgrounds (3)
    • Other (22)
    • Apps (1)
    • Games (3)
    • Benchmarks (6)

GooglePlayに置いてあるよ

そう、実はAndEngineExamples、GooglePlayに置いてある。だからビルドする必要なし。おわり。違う。このアプリ、Nexus7でGooglePlayから検索しても出てこない。Webブラウザから探すと出てくるけど、Nexus7へインストールしようとすると互換性がないと叱られてしまうんですね。 互換性がないって事はないと思うけど公開側が許可してないなら仕方がないので自分でビルドすることにします。それがこのエントリです。

1_Screenshot_from_2013-06-20-134915-400x196.png

ソースコードのダウンロードとインポート

とりあえず、上記2つのソースコード(Androidプロジェクト)をダウンロードして展開します。 フォルダ名は次のように”-GLES2″を削除しておきましょう。あとでリンクの際に煩わしい作業をしなくて済みます。

  • 『AndEngine-GLES2』 → 『AndEngine』
  • 『AndEngineExamples-GLES2』 → 『AndEngineExamples』

次に、eclipseへインポートします。2つとも。 プロジェクトのインポートについて詳しく書かないので、親切な他の誰かが書いている何かを見て下さい。メニュー[ファイル]→[インポート]でどうぞ。 で、2つのプロジェクトをインポートすると、AndEngineExamplesについてはビルドエラーになるはずです。

エラーの解消1:拡張ライブラリへのリンク

AndEngine向けに開発されたExtensionライブラリがいくつかあります。 AndEngineExamplesは、拡張を含めた様々なサンプルを実装しているため、各種Extensionを使用しています。エラーになる理由の1つは、Extensionへのリンク切れです。

3_Screenshot_from_2013-06-20-104444-400x217.png

プロジェクトのプロパティを見ると必要とする拡張ライブラリがわかると思います。結構ある。 2013/06/21現在の拡張ライブラリのライナップは12こですが、AndEngineExamplesが必要とするのは以下9こです。全部ダウンロードしましょう。ビルドに必要です。

AndEngineExamplesが必要とする拡張ライブラリ

これらの拡張ライブラリも、展開後のディレクトリに”-GLES2″が付いてますので削除します。AndEngineMODPlayerExtensionについては、”-GLES2″ではなく”-master”です。削除して下さい。あちなみにGLES2ってのは『OpenGL ES 2』ってことですね。 これらのライブラリを全部eclipseにインポートします。

4_Screenshot_from_2013-06-20-105235-400x217.png

インポートする度にリンク切れが解消されていくのがわかります。全部やって下さい。

エラーの解消2:間違ったコード

将来的にこの問題は解消されると思いますが、現時点でのAndEngineExamplesプロジェクトはコーディングミスによりビルドが通りません。既にpull requestも出ているので、そのうち修正されるでしょう。 以下をなおしましょう。


  • /AndEngineExamples/src/org/andengine/examples/HullAlgorithmExample.java

Line:11

修正前)  
import org.andengine.entity.primitive.vbo.DrawMode;  
修正後)  
import org.andengine.entity.primitive.DrawMode;
  • /AndEngineExamples/src/org/andengine/examples/TextBreakExample.java

Line:106

修正前)  
this.mText = new Text(50, 40, this.mFont, “”, 1000, new TextOptions(AutoWrap.LETTERS, AUTOWRAP_WIDTH, Text.LEADING_DEFAULT, HorizontalAlign.CENTER), vertexBufferObjectManager);  
修正後)  
this.mText = new Text(50, 40, this.mFont, “”, 1000, new TextOptions(AutoWrap.LETTERS, AUTOWRAP_WIDTH, HorizontalAlign.CENTER, Text.LEADING_DEFAULT), vertexBufferObjectManager);
  • /AndEngineExamples/src/org/andengine/examples/BoundCameraExample.java

Line:220

修正前)  
final AnimatedSprite face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager()).animate(100);  
修正後)  
final AnimatedSprite face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager());  
face.animate(100);
  • /AndEngineExamples/src/org/andengine/examples/SplitScreenExample.java

Line:179

修正前)  
final AnimatedSprite face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager()).animate(100);  
修正後)  
final AnimatedSprite face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager());  
face.animate(100);

これでビルドは通るはず。

AndEngine a Go Go!

Screenshot_from_2013-06-22-083316-400x196.png