cocos2d-x v2.2.6 Android 64bit 対応
自分用メモです。
準備としてv2.2.6をAndroid Studioビルドできるようにしておきます↓
http://coffeee.hatenablog.com/entry/2018/08/24/002646
64bit対応のやり方は二つあります。
■cocos2d-x v2.2.6をカスタムしてない場合
フレームワークを改造してなくてノーマルで使っていた人は、有志が用意した64bit化済みのcocos2d-x v2.2.6があるのでそれを使う方が早いです↓
https://github.com/c0i/cocos2d-x-v2
■cocos2d-x v2.2.6をカスタムしている場合
大体の人は中身を改造しているのでこちらの方法になるかと思います。
そもそも64bitビルドできない理由が、サードパーティー製ライブラリのarm64-v8aモジュールがないだけなので、それをcocos2d-x v3.17.2から持ってきます(幸いなことに互換性があったみたいでそのまま使えました)。
まずcocos2d-x v3.17.2の環境を準備します。
1. git clone https://github.com/cocos2d/cocos2d-x.git
2. git checkout cocos2d-x-3.17.2
3. cocos2d-x $ python download-deps.py
4. cocos2d-x $ git submodule update --init
下記フォルダにあるモジュール達をv2.2.6の方にいい感じで上書きします。
cocos2d-x-3.17.2/external/curl
cocos2d-x-3.17.2/external/openssl
cocos2d-x-3.17.2/external/jpeg
cocos2d-x-3.17.2/external/png
cocos2d-x-3.17.2/external/tiff
cocos2d-x-3.17.2/external/webp
cocos2d-x-3.17.2/external/zlib
v2.2.6のフォルダはこちら
cocos2d-x-2.2.6/cocos2dx/platform/third_party/android/prebuilt/
コピーのルールとして、
・includeは完全に置き換えでOK
・prebuiltの中身はarm64-v8a、armeabi-v7a、x86をlibsに上書き
・Android.mkは上書きしない(v2.2.6のを使う)
あとは、一部ソースを修正します。
cocos2dx/cocoa/CCString.hに#include <cstring>を追加
cocos2dx/support/ccUTF8.hに#include <cstring>を追加
これでOK。
64bitビルドはgradle.propertiesでPROP_APP_ABI=armeabi-v7a:arm64-v8aとすればできます(x86はつけません。つけるとx86_64がないから64bit対応できてないみたいに言われてGooglePlayに弾かれます)。
あとはがんばって!