前回のおさらい
前回(cocos2d-x 勉強第1回「Hello World」)は、
cocos2d-xのインストールから、プロジェクトの作成、iOS向けのビルドまでを試しました。
今回は、Android向けのビルドを試してみることにします。
build_native.shの実行
ぐぐったり、proj.androidの中身を見ていたりすると、ビルドにはproj.android/build_native.sh
の実行をすればよいらしいことが分かる。
必要な外部ライブラリなどもあるようだけれど、まずはやってみるのが信条なのである。
please define NDK_ROOT
(NDK_ROOTを定義してくれ)
いいだろう。定義しようじゃないか。
Android NDK/SDKのインストール
Android NDKとは?
The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++.
(智史之介訳: NDKは、CやC++のようなネイティブコード言語を使用してAndroidアプリケーションを実装できるようにするツールセットでござる。)
ほほう。クロスコンパイラ御用達のライブラリということですな。
Android SDKとは?
The Android SDK provides you the API libraries and developer tools necessary to build, test, and debug apps for Android.
(智史之介訳: Android SDKは、Androidアプリのビルド、テスト、デバッグに必要なツールおよびAPIライブラリ群を提供するでござる。)
自分の環境はUnityの勉強時に既に入れてあるので、今回これが必要かどうかはわからないけど、とりあえず入れといた方がよいような気がする!
ダウンロード&インストール
- http://developer.android.com/tools/sdk/ndk/index.html
- http://developer.android.com/sdk/index.html
自分の環境にあったファイルをダウンロードして、解凍したら、任意の場所に設置します。
自分の場合はこんな感じで配置しておきました。
さっきのproj.android/build_native.sh
の中身にNDK_ROOT
の定義を追記してもいいんだけど、グループで開発する場合にそんな事をすると盛大に顰蹙を買う事になるので、
モテ紳士でありたいならば、おとなしく.bashrcにでも書いておくことをオススメします。
再度build_native.shの実行
お、今度はなんかできたっぽいぞ。
シミュレータでの起動
ビルドまでは(たぶん)オーケーなので、シミュレータにアプリをインストールして起動してみたい。
proj.android/README.md
に書かれている感じでinstallコマンドを実行してみる。
ありゃ、失敗だ。。
こういう場合の対処もREADME.mdにきちんと書いてある。惚れてまうやろー!
改めて実機へのインストールを試みてみよう。
きたっぽい!
また天才ぶりを発揮してしまったか…。
次回に向けて
今回は、ただ「android向けにビルドして起動する」というだけの課題なのに妙にいろいろなところでつまづいたな…。
これも私がモテすぎるが故の代償なのか…うわなんだおまえはやめrあqwせdrftgyふじこlp;@:「
次回は、タッチ処理周辺を試してみようかなと思っています。
今回遭遇した、本編とは無関係そうなエラーとその対処方に関して
./build_native.sh
実行時のエラー。
APP_PLATFORM
の値が定義されていないために、自動生成された値に問題があると思われます。
下記の記述で回避可能。
cocos2dx/Android.mk:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries
同じく./build_native.sh
実行時のエラー。
どうやら、Android NDK r9特有のエラーのようだ。r8eに差し替えて実行したら発生しなくなりました。
ダウンロードリンクを一応載せておきます。
http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2
java.lang.IllegalArgumentException: Unable to find native library: cocos2dcpp
どうやらエミュレーターの設定次第で発生するようだ。
Nexus7のデフォルト設定をcloneして作成したAVDでは発生しなかった。
今回のソースコード
https://github.com/8823-scholar/cocos2d-x-study/tree/de0d4c57c9dad8c3995f0a0b3d674f074f24000f