どうも。せっかく書いた記事が全部消えちゃってすごく悲しいです。下書き保存なんでしてくれてないの・・・?
cocos2d-xを始めました!
今回Android Studioを用いてcocos2d-xの環境構築をしていくという記事になりますが、めちゃくちゃグダグダな記事になってしまいました。
途中からエラーエラーエラーの連発。本当に10時間以上くらいかかってしまいましたが、なんとかエミュレータでHelloWorldを表示するところまで出来ました。
実際にこの記事を読み進めながらだとほぼ確実に失敗すると思います。長いですが、一度最後までざっくり目を通して頂いてからのが良いと思います・・・・。
cocos2d-xってなんぞ?
cocos2d-xは、2Dゲーム開発用のフレームワークです。スマホゲームが作れます。
一番の特徴は、クロスプラットフォームです。1つのコードで複数のプラットフォームで配信することができます。iPhoneもAndroidも同時にリリースできるというわけです。PC用も作れます。
開発言語はC++。
まるっきり初めてというわけではないのでなんとかなるかなとは思っています。
本当はSwiftで書くことがでくるSpriteKitをしようと思っていたのですが、クロスプラットフォームには勝てませんでした。そのうちやってみたいけれど。
まずはこちらの本を読み進めていこうと思っています。
cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android |
まだ導入のところなんですが、Androidの方がちょっと現在のバージョンと異なるところがあったので、メモ程度ですが書いていこうと思います。iPhoneはXcodeなので割愛です。
開発環境はMacです。
Javaを導入する
まずはJavaを用意します。
ターミナルで
java -version
と入力するとJavaのセットアップが始まります。
既に入っている場合は現在のバージョンが表示されます。
Android Studioを導入する
ここからが参考書に書いてあるものと少し現在のバージョンと異なっていました(URLが変わっていたりWebデザインが変更されて分かりにくかったり・・・)
まずはこちらから
http://developer.android.com/intl/ja/sdk/index.html
Android SDKというものを用意してeclipseで開発していくというやり方が書かれていましたが、今回はAndroid Studioというものを使用したいと思います。
というわけでAndroid Studioを用意します。先ほどのURLから
一番上の緑色のボタンでダウンロード可能です。
Android SDKも含まれています。
デフォルトのままダウンロードインストールしていけば大丈夫と思われます
Android SDKの場所は後から使いますので覚えておいてください。
Android NDKを用意する
こちらのURLからダウンロードします。
http://developer.android.com/intl/ja/ndk/downloads/index.html
ダウンンロードが終了したら、フォルダ名をndkにして先ほどのAndroidフォルダにいれておきます。
場所がなかなか開けない場合はターミナルで
open /Users/(ユーザ名) /Library/Android/
と打てば開けます。
ndkをダウンロードする際に最新のr11を使用するとおそらく失敗します。
少し遡ってNDKのエラー対処で説明しています。
Apache ANTを用意する
次はANTというものを用意します。
http://ant.apache.org/bindownload.cgi
真ん中らへんにあるCurrent Release of Antのところです。
そしてフォルダ名をantにして先ほどのAndroidフォルダに入れておきます。
現在ApplicationsにあるAndroidフォルダの中身はこんな感じ
cocos2d-xをダウンロードする
ここからダウンロードしていきます。
http://jp.cocos.com/products/download/
ダウンロードが完了したら、解凍しホームディレクトリの直下におきます。
Finderを開いた状態で
ついでにファイル名をcocos2d-x-3からcocos2d-xに変更しました。
Users/(ユーザ名) /cocos2d-x
といった感じになります。もしくはターミナルで
open /Users/(ユーザ名)/
で開くことができます。
ターミナルでcocos2d-xがあるところまで移動します。
cd /Users/(ユーザ名)/cocos2d-x/
そしてセットアップします
./setup.py
途中でNDKとSDKとANTの場所を聞かれます。 Please enter the path of NDK_ROOT (or press Enter to skip): みたいな感じで聞かれますのでパスを入力します。
(NDK,SDK,ANTのそれぞれどれが聞かれているか間違えないように気をつけて下さい!)
現在それぞれApplicationsのAndroidフォルダの中にはいっていますので、
Please enter the path of NDK_ROOT (or press Enter to skip):/Users/(ユーザ名)/Android/ndk
Please enter the path of ANDROID_SDK_ROOT (or press Enter to skip):/Users/(ユーザ名)/Android/sdk
Please enter the path of ANT_ROOT (or press Enter to skip):/Users/(ユーザ名)/Android/ant/bin
こんな感じにそれぞれ入力してください。
antだけbinまで必要なことに注意してください!
最後にセットアップが完了した後に
source ~/.bash_profile
で反映させておきます。
ついでに
cat ~/.bash_profile
で確認してみて、先ほどのNDK等が反映されていればOKです。
最後に
cocos
を入力してセットアップが完了です。
今後cocosというコマンドが使用できるようになります!
プロジェクトを作成する
cocos2d-xを用いたプロジェクトを作成する場合はターミナルから
cocos new HelloCocos -p xyz.uruly.HelloCocos -l cpp -d ~/Desktop
といった風にして作成できます。
$ cocos new プロジェクト名 -p パッケージ名 -l 言語 -d ディレクトリ
となっています。
パッケージ名のつけ方とかはXcodeでアプリを使用するときと同じですね。
言語はcpp(C++)とlua(Lua)とjs(JavaScript)が選択できます。今回はC++です。
デスクトップにHelloCocosというフォルダができていればOKです。
中身はこんな感じ
proj.ios_macを開くと見慣れたXcodeのプロジェクトが出てきます。
画像とか音とかの素材はまとめてResourcesに入れておきます。
Android Studioで開いてみる
さてここでAndroid Studioでプロジェクトを開いてみます。
Android Studioを開いて
Open an existing Android Studio project をクリック
先ほど作成したフォルダから
proi.android-studioをクリックしてOK
Androidの実機を持っていないのでとりあえずAndroidエミュレータを作成します。
Tools>Android>AVD Managerを開きます
Create Virtual Deviceにて追加していきます。
AndroidさっぱりなのでとりあえずNexus 5を追加しました。
そして横の▶︎より実行してみます。
なんかエラーが出ました。
ERROR: Invalid GPU mode 'yes', use one of: on off host guest
エミュレータを追加するときに
Emulated Performance の GraphicsをSoftwareにしたら解決しました。
こちらを参考に
再度▶︎を押すと起動することができました。
ここまできて数時間・・・・
Xcodeではいつも通りビルドできるのに、android studioの方がうまくいきません。
めちゃくちゃAndroidStudioを推してくるから使っている人が多いのかと思ったらそうでもなく。cocos2dとの相性はそんなに良くない模様。
大人しくeclipseでした方が良いのではないかと思い始めています。
じゃないと進まない・・・環境構築だけで1日が終わってしまいそうです。。。
次から次へと謎エラーが出続けましたがなんとかできたっぽい・・・?
AndroidMonitorにてこのようなエラーが出ていました。
Gradle DSL method not found: 'android()'
(というか最初に出ていたのを少しいじったら出てきた・・・)
android {
compileSdkVersion 23
buildToolsVersion '24.0.3'
}
という記述があったのでこれをコメントアウト
その後またエラーが出てをアップデートしてくださいとかをインストールしてくださいとか色々でてきたのを全て言われるがまましていきました。
やっとエラーがなくなった!と思ったら左横のProject欄?にHelloWorldの文字が!!!
こちらの記事を参考にこのエラーをなんとかしました。
Gradle DSL method not found: 'android()'エラーが出る
やっとこさRunできるようになりましたが、今度はエミュレータを起動すると、Unfortunately, libcocos2dx has stoppedというエラーが出てきて起動ができません・・・・。
ここからが大変でした。めっちゃ時間かかりましたがやっと解決。解決と言っていいのかもわからないぐらいたくさん迷いましたが一応起動はできました。
少し長くなりますが手順としては
- cocos compile -p android
- Then import your proj.android to Android Studio.
- Now you can run your application but you won't able to debug it, bad news (it will just install the APK on your device or virtual device).
http://stackoverflow.com/questions/32032610/open-cocos2d-x-3-7-in-android-studio
1.ターミナルでcocos compile -p androidとかく
このとき通常のターミナルで実行しても、.cocos-project.jsonがないと言われ実行できませんでした。
色々試してみたのですが、結局Android Studioでプロジェクトを開き、その中のターミナルを使用したところ、実行できました。おそらく場所が悪かっただけかなと思われます。cdで移動してからすれば多分大丈夫かと。
NDKのバージョンをr10cにする
実行したところNDKのバージョンが違うと言われました。
このときr9dを使用していたのですが、cocos2d-x 3.10ではr10cを使うと良いという記事を見つけ変更してみました。
r10cはここからダウンロードしました(これを探すのも一苦労)
http://pnsurez.blogspot.jp/2015/07/download-android-ndk-tools.html
そしてダブルクリックで解凍・・・と思いきや開けない・・・・。
ターミナルで、
cd [インストールフォルダ]
と入力していくことで解凍できました。
参考はCocos2d-jsをAndroidでデバッグしてみる
解凍できたら、こちらのファイルを先ほどのAndroidの直下におきます。(sdkとかndkとか置いてある場所)
ターミナルで
echo "NDK_ROOT=/Users/(ユーザ名)/Library/Android/android-ndk-r10c" >> ~/.bash_profile
と入力することで環境変数を変えておきます。
もう一度Android Studioで$ cocos compile -p android を実行します。
これでもエラーが出る場合は、File>Project Structureをいじったりしてなんとかしました。
成功すると、Move apk to /Users/~~~~ Build Succeed.となります。
このapkを使用します。
先にadbというコマンドを使えるようにしておきます。
adbを使えるようにする
パスを通しておきます
echo 'export PATH="$PATH:/Users/(ユーザ名)/Library/Android/sdk/platform-tools"' >> ~/.bash_profile
このsdkの場所はFile>Project Structureで確認できます。
これでadbが使えるようになっているはずです。
adbがなかなか使えるようにならなかった。。。。こちらを参考にしました。
http://qiita.com/furusin_oriver/items/f956848788c7a63922bd
次に先ほどのapkの場所に移動
$ cd (apkの場所)で移動しておきましょう。
そこに .apkファイルができていますので、$ open (apkの場所)でファイル名を確認しておきます。
そして
adb install (ファイル名).apk
を実行します。
Invalid APK fileと言われたりMissing APK fileとか言われたりします。
そうした場合はファイル名を確認するか手順を確認してもう一度〜とかやっていたらなんとかできました。
Successとなれば成功です。
APK Fileのエラーではなく、
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
というエラーが出た場合は、エミュレータのCPU/ABIというところが合っていなく、サポートしていないエミュレータを使用しているようです。
下記を参考にしてNexus6のABIがarmeabi-v7aを選択します。
Error installing Android app with Spotify SDK, [INSTALL_FAILED_NO_MATCHING_ABIS]
そしてもう一度実行すると成功しました。
adb install を実行するときはエミュレータを1つだけ起動した状態で実行してください。
Successとなればエミュレータのデバイス内にアプリが表示されているはずです。探してみてください。
adb installをしたときに既にあると言われた場合は adb install -r で実行すればアップデートできます。
この辺はこちらの記事を参考にさせていただきました
Androidにapkを転送する際の Invalid ~ やNo Such file directory
プロジェクト作成後にこの記事を書き始めたのですが、結局トータルで10時間くらいは調べまくって色々と試したりしてました。せっかく記事書き始めちゃったしどうにかAndroid Studioで表示できるくらいにはならないと・・・と思って頑張りましたが、実際にこれを使って開発・・・と考えると頭が痛いのでeclipseにするかもしれません。
そして、迷いに迷いまくって色々変更したりなんだりしまくったので、記事内の解決法のみで解決できる保証もできません。ごめんなさい(´・ω・`)
迷いだしてからはスクショをとる余裕もなく、文字ばかりで分かりづらいです。。。
その他ちょっとしたエラーなどの対処法をちょろっとだけ書いていきます。
Android Studioをアンインストールする
一度最初からやり直そう!と思ってAndroid Studioをゴミ箱に入れてダウンロードし直したのですが、以前の情報が残っていてあれ?となりました。
rm -Rf /Applications/Android\ Studio.app
ゴミ箱に捨てるのではなく、ターミナルでこれらを1つずつ叩いていくと削除できました。
環境変数を変更するとき
環境変数を変更するとき、.bash_loginと.bash_profileのどっちに書けばいいんだ??となりました。
こちらを参考にしました。
.bash_profileとか.bash_loginとか.profileとか.bashrcとか.bash_logoutとか多すぎる
.bash_loginは.bash_profileが存在しない場合に読み込まれるということ。
色々なところをぐるぐるしていると.bash_loginに書いたり.bash_profileに書いたりしてしまい、結果反映できていないことがありました。
統一して.bash_profileに書くようにしたら反映されました。
このくらいですかね。グダグダで申し訳ないです。
やっと次に進めます。。。
その他参考にさせていただいた記事
参考リンク
Additional Notes追記
トラウマ
いい勉強にはなったけれど、Android開発はこれ以来あんまりする気になれない。。。。
コメントはありません。
現在コメントフォームは工事中です。