#author("2016-05-11T12:10:54+09:00","","")
#author("2016-07-26T10:09:35+00:00","","")
[[Android開発環境設定2016]]

*Cocos2Dxのプロジェクトにソースコードの追加をしてみる [#icaae56d]
cocos2dxのhowtoどおりに環境はできた。しかし、自分のコードを書いてコンパイルして
リンクして実機に転送するにはどのようにすればいいのか?

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

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


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

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

***それぞれのプロジェクトって? [#i28959f2]
多分これらのこと。
|proj.android|古いAndroid開発環境|
|proj.android-studio|新しいAndroid開発環境|
|proj.ios_mac|mac|
|proj.win8.1-universal|8時代のストア、メトロアプリ?|
|proj.win10|Windows10環境 Windowsストア?|
|proj.win32|WindowsXP環境|

-で、androidとandroid-studioとはフォルダが違う。
-もうプラットフォームとして違うとして考えたほうがいいみたい

-そう考えるとAndroidStudioでいじるのは「proj.android-studio」だけでいいってことになる

***「proj.android-studio」でhelloWorldScene.cppをgrepかけてみる [#fcc510cd]
「proj.android-studio\app\jni\Android.mk」に記載を発見
ここにソースを追加してみると、コンパイル対象に入った!

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



***デバッグできるの?エラーメッセージは? [#t0f65337]
-バッチリ問題のある行でコンパイルが止まったっぽい
 jni/../../../Classes/visorizer.cpp:13:19: fatal error: dqLib.h: No such file or directory
 #include <dqLib.h>
 jni/../../../Classes/visorizer.cpp:13:19: fatal error: gxLib.h: No such file or directory
 #include <gxLib.h>

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


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

 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 [#lccff98f]

BUILD SUCCESSFUL

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

やったーできたぞー、転送してみるね
&ref("./buildrun.PNG",50%);

-転送できました!!!

***Cocos2DxとAndroid Studio [#s236e490]
なんかいろいろゴッチャになってきてた。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のコンパイル設定をしなくてはならない