cocos2d-x v3.2をwindows7+genymotionで動かす

ほぼ自分用メモ。
目的は**「windows7でcocos2d-xのコンパイルをして、genymotionで動いているのを見る」** です。
コンパイルはコマンドから行っているので、eclipseなどの設定はありません。

## まず、cocos2d-xを動くようにする

動いている画面が見られるまで行きませんが、とりあえずcocos2d-xが動くようになるようにします。
（参考サイトいっぱいありますので、すでに知っている方はスキップを）

参考：というかここを見ればよいです(さすが公式)
[How to run cpp-tests on Windows | Cocos2d-x](http://www.cocos2d-x.org/wiki/How_to_run_cpp-tests_on_Windows)

### ダウンロードするもの

* Cocos2d-x v3.2([Cocos2d-x: オープンソースゲーム開発プラットフォーム](http://jp.cocos2d-x.org/))
* Python v2.7 ([Welcome to Python.org](https://www.python.org/))

### セットアップ

#### 1. pythonをインストール

* サイトからダウンロードして、インストール<br />
version2.7です、3系だと動きませんでした
* pathを通す(環境変数)<br />
例：C:\Python27\Scripts; (区切りの;を忘れないように)
* コマンドプロンプトで確認

```bat:cmd
C:\Users\{user}>python --version
Python 2.7.9
```
#### 2. cocos2d-x をインストール

* サイトからダウンロードしてインストール<br />
例： C:\Users\{user}\lib 配下
* setup.pyを実行<br />

```bat:cmd
C:\Users\{user}\lib\cocos2d-x>python setup.py
Setting up cocos2d-x...
->Check environment variable COCOS_CONSOLE_ROOT
  ->Search for environment variable COCOS_CONSOLE_ROOT...
    ->COCOS_CONSOLE_ROOT is found : C:\Users\{user}\lib\cocos2d-x\tools\cocos2d-console\bin

->Check environment variable COCOS_TEMPLATES_ROOT
  ->Search for environment variable COCOS_TEMPLATES_ROOT...
    ->COCOS_TEMPLATES_ROOT is found : C:\Users\{user}\lib\cocos2d-x\templates
```
他にもいろいろ出ますが、とりあえず、 **COCOS_CONSOLE_ROOT** と **COCOS_TEMPLATES_ROOT** がセットアップされていればOKです

* 動作確認

```bat:cmd
cocos -h

C:\Users\{user}\lib\cocos2d-x\tools\cocos2d-console\bin\/cocos.py 1.5 - cocos console: A command line tool for cocos2d-x

Available commands:
        run           Compiles & deploy project and then runs it on the target
        luacompile    minifies and/or compiles lua files
        deploy        Deploy a project to the target
        package       Do a package operation
        compile       Compiles the current project to binary
        framework     Do a framework operation
        new           Creates a new project
        jscompile     minifies and/or compiles js files

Available arguments:
        -h, --help      Show this help information
        -v, --version   Show the version of this command tool

Example:
        C:\Users\{user}\lib\cocos2d-x\tools\cocos2d-console\bin\/cocos.py new --help
        C:\Users\{user}\lib\cocos2d-x\tools\cocos2d-console\bin\/cocos.py run --help
```

## 次にandroidのコンパイルができるようにする

### ダウンロードするもの

* [Java SE Development Kit 8 - Downloads](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)<br>
android sdkをインストールするときに必要になるので、先にインストールしておくと良いです。<br>
僕は、jdk-8u40-windows-x64.exe をインストールしました。
* Android sdk ([Download Android Studio and SDK Tools | Android Developers](http://developer.android.com/sdk/index.html))<br>
sdk を落としたいのに、studioのダウンロードになってるんだけど・・・と思いましたが、sdkも一緒にダウンロードされますので迷わずstudioをどうぞ。<br>
sdkのインストール先は、C:\Users\{user}\AppData\Local\Android\sdkです。<br>
tools単体の方は正直良くわからなかったのでスルーです。
* Android NDK 9r([Android NDK | Android Developers]<br>(https://developer.android.com/tools/sdk/ndk/index.html))<br>
8e出ないと動かないなどの記事も見ましたが、動作確認できたのは、9rでした。<br>
platformが足りないらしいので、9rからコピればいいのかもしれません。<br>
また、公式のリンクからだと最新しかダウンロード出来ないので、「android ndk 旧バージョン」などで検索すると見つかると思います。
* [Apache Ant - Welcome](http://ant.apache.org/)<br>
Binary Distributions をダウンロードしてインストール
* [Cygwin](https://www.cygwin.com/)<br>
インストールするときに、makeもインストールしてください。<br>
makeで検索して、develってやつをinstall状態にしてればOKです。<br>
最近のcocosでは不要という記事も見ました。<Br>
僕は先に設定してしまったので不要かはわかりません。

### 環境変数のセットアップ

最終的に以下の環境変数をセットしないと、コマンドからはコンパイルできませんでした。
インストール or ダウンロード環境に合わせて設定してください

* ANDROID_SDK_ROOT<br>
C:\Users\{user}\AppData\Local\Android\sdk
* NDK_ROOT<br>
C:\Users\{user}\lib\android-ndk-r9
* ANT_ROOT<br>
C:\Users\{user}\lib\apache-ant-1.9.4\bin
* JAVA_HOME<br>
C:\Program Files\Java\jdk1.8.0_40
* path (追記)<br>
C:\cygwin\bin;<br>
C:\Python27;<br>
C:\Python27\Scripts;<br>
C:\Users\yuichi\AppData\Local\Android\sdk\platform-tools;<br>
C:\Users\yuichi\AppData\Local\Android\sdk\tools;<br>
C:\Users\yuichi\lib\android-ndk-r9;

### sdkのインストール

* android sdkの、フォルダ直下の SDK Manager.exe をダブルクリック<br>
必要なものをダウンロードしてください。<br>
今回の動作確認では、Tools、Extras、Android4.4.2 (API19)あたりをダウンロードしました。

### プロジェクトの作成

0. コマンドでプロジェクトを作成する
```bat:cmd
cocos new emptyGame -p com.company.group -l cpp -d C:\workSpace
```
0. コンパイルする

```bat:cmd
cocos run -s C:\workSpace\emptyGame -p android --ap android-19
```
いろいろログが出て、最終的に waiting for devicesと表示されれば成功です。
エラーが出る場合は、自分の場合、大体は環境変数が間違っていました。

### エミュレータで動かす

* android sdkの、フォルダ直下の AVD Manager.exe (Android Virtual Device) をダブルクリック<br>
* create...ボタンを押して、デバイスを作成する<br>
こんなかんじの設定<br>
・AVD Name：sampleDevice<br>
・Device：Nexus 7<br>
・Target：Android 4.4.2 - API Level 19<br>
・CPU/ABI：ARM(armeabi-v7a)<br>
・Emulation Options：Use Host GPU<br>
　チェックを入れておかないと、起動時に落ちます
* start... ボタンを押して起動
* エミュレータで起動

```bat:cmd
cocos run -s C:\workSpace\emptyGame -p android --ap android-19
```
起動したエミュレータにcocosのhello worldが表示されればOKです

## genymotion で起動する

### genymotionのインストール
・[Oracle VM VirtualBox](https://www.virtualbox.org/)
・[サイト](https://www.genymotion.com/#!/)からダウンロードしてインストール 

### コンパイルしたバイナリの転送をできるようにする
・[Genymotionにアプリを転送しようとすると「INSTALL_FAILED_CPU_ABI_INCOMPATIBLE」エラー → 解決 | CreativeStyle](http://kadoppe.com/archives/2014/01/genymotion-install-failed-cpu-abi-imcompatible-error.html)
・[[GUIDE] Genymotion | Installing ARM Translat… | Android Development and Hacking | XDA Forums](http://forum.xda-developers.com/showthread.php?t=2528952)
・genymotionのエミュレータをを作成して起動
・ARM Translation Installer v1.1.zip をダウンロードして、エミュレータ画面にドラッグアンドドロップ
・エミュレータの再起動

### jni/Application.mkを修正

```xml:Application.mk
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char -U__SSE__
APP_LDFLAGS := -latomic
APP_ABI := armeabi x86
```
-U__SSE__、と APP_ABI := armeabi x86 を追加しています。

### エミュレータで起動

```bat:cmd
cocos run -s C:\workSpace\emptyGame -p android --ap android-19
```
起動したエミュレータにcocosのhello worldが表示されればOKです