cocos2d-x v2をAndroid Studioでビルドする
自分用メモです
環境:
cocos2d-x v2.2.6
cocos2d-x v3.17
Android Studio 3.1.4
Android NDK r11c
1. 準備
cocos2d-x v3.17で空のcocosプロジェクトを作ります。
こんな感じになると思います。
この中のproj.androidをproj.android-studioにリネームします。
2. proj.android-studioのコピー
proj.android-studioをcocos2d-x v2のプロジェクトにコピーします。
こうなると思います。わざわざリネームしたのは以下のように使い分けられるようにです。
proj.android-studio -> Android Studioビルド用
3. libcocos2dxのコピー
下記のようにv3.17のlibcocos2dxフォルダをv2.2.6へコピーします。
cocos2d-x-3.17/cocos2d/cocos/platform/android/libcocos2dx ←これを
cocos2d-x-2.2.6/cocos2dx/platform/android/libcocos2dx ←ここにコピー
4. proj.androidの一部をコピー
以下のv2.2.6用のファイルをproj.android-studio/appにコピーして上書きします。
proj.android/AndroidManifest.xml
proj.android/jni
proj.android/libs
proj.android/res
proj.android/src
5. 設定ファイルを一部修正
v2.2.6でビルドできるように設定とかパスを修正します。
・gradle.properties
PROP_APP_ABI=armeabi-v7a ---> armeabi
PROP_BUILD_TYPE=cmake ---> ndk-build
・settings.gradle
libcocos2dxのパスを修正。
'../cocos2d/cocos/platform/android/libcocos2dx'
↓
'../../../cocos2dx/platform/android/libcocos2dx'
・app/build.gradle
targets 'MyGame' ---> 'cocos2dcpp'
NDK_TOOLCHAIN_VERSION=clang ---> 4.9
・app/jni/Android.mk
以下をinclude $(CLEAR_VARS)の下あたりにコピペ。
$(call import-add-path,$(LOCAL_PATH))
$(call import-add-path,$(LOCAL_PATH)/../../../../../)
$(call import-add-path,$(LOCAL_PATH)/../../../../../cocos2dx)
$(call import-add-path,$(LOCAL_PATH)/../../../../../external)
$(call import-add-path,$(LOCAL_PATH)/../../../../../cocos2dx/platform/third_party/android/prebuilt)
$(call import-add-path,$(LOCAL_PATH)/../../../../../extensions)
$(call import-add-path,$(LOCAL_PATH)/../../../../../CocosDenshion/android)
ソースコードのパスを下記例のように全て修正します(ヘッダーファイルも)。
../../Classes/xxxxxx
↓
../../../Classes/xxxxxx
6. Android Studioでインポート
あとはAndroid Studioがツールのバージョンが古いとか教えてくれるので、はいはい言いながら進めていけば準備が整います。
主に以下のようなことを言われると思います。
AndroidManifest.xml から minSdkVersion を削除。
cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxBitmap.java
FloatMath.ceil() ---> Math.ceil()
cocos2dx/Android.mk の修正(ビルド通らないため)
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static
#LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static
extensions/Android.mk の修正(ビルド通らないため)
-network/WebSocket.cpp \
#LOCAL_WHOLE_STATIC_LIBRARIES += libwebsockets_static
#$(call import-module,external/libwebsockets/android)
最後に、
・local.propertiesでNDKのパスを指定
ndk.dir=/Applications/android_ndk/android-ndk-r11c
7. ビルド
Build -> Make Projectってやればビルドできると思います。
エラーがでたらがんばって対応。
ザクザク芝刈りの次の世界観
ザクザク芝刈りwの続編をストーリー付きで作りたいと考えています。
だれでも隣の芝生は青く見えるものです。
そんな中突然生えてくる「赤い草」。
この赤い草の正体はなんなのか?
その悪い芝を刈ってくれる芝刈りの人とは?
芝刈り屋さんの罪と罰・・・
そんな世界を描きます。
タイトルは「ザクザク芝刈りDX」でしょうか。
現行作品は下記リンクからどうぞ。
Android Studioで自動的に含まれるパーミッション(android.permission.WAKE_LOCK)の削除方法
環境:
Android Studio 3.0
Google Play Services 11.6.0
Gradleで
compile 'com.google.android.gms:play-services-analytics:11.6.0'
とかやると自動的に不要なパーミッションが付いてしまいます。
android.permission.WAKE_LOCK
Google公式のアナリティクス実装ガイドには、オプションだから入れなくてもいいって書いてあるんだけど、Gradleは全部入れてしまう。そう自動的に。
なのでこれをAndroid Studioのエディター上で、簡単なマウスクリックだけで削除する方法を見つけました。
まず、AndroidManifest.xmlを開きます。
次に、「Merged Manifest」をクリックします。
すると、最終的にapkに含まれるAndroidManifest.xmlを見ることができます。これは便利ですね!
で、よく見ると、Google Analyticsによって自動的にandroid.permission.WAKE_LOCKが追加されていることがわかります。
なので、これを右クリックして「Remove」しちゃいましょう。
さらに、不要なサービスやレシーバーも合わせて削除しましょう。
com.google.android.gms.analytics.AnalyticsReceiver
com.google.android.gms.analytics.AnalyticsService
(たぶんこれ削除しとかないとパーミッションが無いとかでクラッシュするかと思います。ここのサイトにもそのような記述があります。)
これで完了です!