Android開発環境設定2016

Cocos2Dxのプロジェクトにソースコードの追加をしてみる

cocos2dxのhowtoどおりに環境はできた。しかし、自分のコードを書いてコンパイルして
リンクして実機に転送するにはどのようにすればいいのか?

実機への転送は多分問題ない。しかしソースコードをコンパイルしてobjをリンクするといった、makeファイルのアレを一体どうすればいいのか?

いまでもmakeファイルを使っているのだろうか?いろいろな疑問に挑戦してみよう

gradleとは何か?

gradleとは新しいmakeファイル的なもの。makeファイルもビルドツールと言うんですって。
ant,Mavenなどもビルドツール。これらはgradleに移行する前にAndroidで使われていたものなので単語が出てきてもビビらないようにする。

Cファイルの追加はどうするのか?

  • CMakeLists.txtにHelloWorldScene.cppファイルの記載があったのでここにファイルを追記してみたが、コンパイル対象にならず
  • grepをかけてみたら色んなファイルでHelloWorldScene.cppの記載を発見
    よく考えてみたらWindowsではVisualStudioを使うし、macではxcode、Androidでは過去にEclipseを使っていたわけなんで、プロジェクトごと(プラットフォームごと)に、それぞれに設定が必要になるはずである

それぞれのプロジェクトって?

多分これらのこと。

proj.android古いAndroid開発環境
proj.android-studio新しいAndroid開発環境
proj.ios_macmac
proj.win8.1-universal8時代のストア、メトロアプリ?
proj.win10Windows10環境 Windowsストア?
proj.win32WindowsXP環境
  • で、androidとandroid-studioとはフォルダが違う。
  • もうプラットフォームとして違うとして考えたほうがいいみたい
  • そう考えるとAndroidStudioでいじるのは「proj.android-studio」だけでいいってことになる

「proj.android-studio」でhelloWorldScene.cppをgrepかけてみる

「proj.android-studio\app\jni\Android.mk」に記載を発見
ここにソースを追加してみると、コンパイル対象に入った!

Android.mk

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../../Classes/AppDelegate.cpp \
                   ../../../Classes/HelloWorldScene.cpp\
                   ../../../Classes/visorizer.cpp

デバッグできるの?エラーメッセージは?

  • バッチリ問題のある行でコンパイルが止まったっぽい
    jni/../../../Classes/visorizer.cpp:13:19: fatal error: gxLib.h: No such file or directory
    #include <gxLib.h>

そもそもAndroid Studioってなんなの?

  • よく考えたらEclipse環境からコレに移行したって書いてあるわけなんでIDEなのね
  • ファイルの追加とかコマンドライン向けにシなくてはいけないことだらけなので、コレがIDEであるっていう認識が全く無かった
  • これでbreakポイントはって、ファイル追加して、差分管理して、コンパイルコマンド出して、ターゲットに送る、ってことね
  • コマンドライン併用ってことはNDKに関しては、まだ未完成なんだな

BUILD FAILED

コンパイルエラーをとり終えてとりあえずコンパイルは通るようになったけど
ビルドに失敗、なにやら難しそうな単語が並ぶ・・・

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\dev\cocosPrj\sample3\cocos2d\cocos\platform\android\libcocos2dx \build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':libcocos2dx'.
> Failed to apply plugin [id 'com.android.library']
   > Gradle version 2.10 is required. Current version is 2.4. If using the  gradle wrapper, try editing the distributionUrl in D:\dev\cocosPrj\Sample3\proj.android-studio\gradle\wrapper\gradle-wrapper.properties to gradle-2.10-all.zip
  • gradle wrapperのバージョン2.4を使うって設定してるけど、2.10が必要だよ!っていってるっぽい
  • gradle-wrapper.propertiesを編集して「gradle-2.10-all.zip」に書き換えて、って言ってる感じ

proj.android-studio/gradle/wrapper/gradle-wrapper.properties

#Fri Jul 31 20:40:49 CST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
  • たしかに「gradle-2.4-all.zip」ってなってる、言われるままに書き換えてみる
  • しかし、言われるままに修正して治った試しがないのだが。。。。
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
  • あ、通った・・・!すげえ、エラーの場所だけでなく、直し方も適切に教えてくれるなんてステキ!

BUILD SUCCESSFUL

BUILD SUCCESSFUL

Total time: 7.087 secs
Stopped 0 compiler daemon(s).
Move apk to D:\dev\cocosPrj\Sample3\bin\debug\android
Build succeed.

やったーできたぞー、転送してみるね
buildrun.PNG

  • 転送できました!!!

Cocos2DxとAndroid Studio

なんかいろいろゴッチャになってきてた。Android Studioに関する誤った考え方

  • 将来的にはUnity的に全プラットフォームで共通のUI、設定で動かせるということだろうか?
  • でもVisualStudioとか、Xcodeが必要になることを考えると、上っ面でカバーする感じなのかなぁ
  • Unityエディタとは違うのかもしれない

AndroidではWindows/mac環境でAndroidプラットフォームで動く開発環境でしかない
当たり前だった。iOSとかWindowsストアとかWindows10とか関係ないよね?
Cocos2Dxがマルチプラットフォームに対応してるだけで、IDEがどうとか関係無かった

  • Cocos2DがAndroid Studioの環境に対応しきれていないだけ
  • NDKがAndroid Studioの環境に対応しきれていないだけ

この両方があるから、Android-Studio用のmakeファイルをいじってNDKのコンパイル設定をしなくてはならない

添付ファイル: filebuildrun.PNG 157件 [詳細]