忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/05 21:56 】 |
既存のcocos2d-xプロジェクトをEclipseからAndroidStudioに移行する
cocos2d-xですでに作っているプロジェクトの
cocos2d-xのバージョンアップをするのは、少し手がかかる

特に、3.7より古いバージョンで作ったゲームを
3.7移行で対応されたandroid-studioに対応したい時はどうするのか。



通常、cocosプロジェクトのルートに
各プラットフォーム向けのディレクトリがある
proj.ios_mac
proj.android
などなど。
これらは、最初にプロジェクトを作る時に
$ cocos2d-x-3.7/setup.py
を実行することで作られる。
後からこれを実行することはできない(できるかもしれないがどうなるかわからない)


1.
cocos2d-x-3.7/templates/cpp-template-default/proj.android-studio/
ディレクトリを、自分のプロジェクトにまるっとコピー

2.
AndroidManifest.xmlを、
proj.android/からまるっとコピー

3.
とりあえずコンパイルしてみる
$ cd PROJ_DIR/proj.android-studio
$ cocos compile -p android --android-studio

エラーが出る。

No project name specified, using Activity name 'MainActivity'.
If you wish to change it, edit the first line of build.xml.




4.
build.gradleのapplicationIdがデフォルトのままなので
AndroidManifest.xmlのpackageと同じ名前に変更
ついでに、defaultConfig 関連の設定を全部proj.androidと同じに揃える(sdkVersionなど)

5.
再度コンパイル。
先ほどのエラーはなくなった

次のエラーは

jni/../../../Classes/BaseLayer.h:13:34: fatal error: extensions/cocos-ext.h: No such file or directory



cocos2d-xのライブラリのインクルード指定をする必要がある

6.
Android.mkのcocosライブラリインクルード周りを見てみる。
が、デフォルトでextension周りはインクルードされているようだ。

ついでなので、

CPP_FILES := $(shell find $(LOCAL_PATH)/../../../Classes -name *.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(shell find $(LOCAL_PATH)/../../../Classes -type d)



を記述。

またApplication.mkに

APP_CPPFLAGS += -DCC_TARGET_OS_ANDROID=1



を記述


7.
コンパイル。
まだ同じところでエラー。

8.
インクルードパスを指定するような場所を探す。
とりあえずProject StructureでNDKパスを以下に指定
/path/to/android/SDK/ndk-bundle
SDKは
/path/to/android/SDK
JDKは
/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home

しかしそのほかにインクルードパスを指定するようなところがない
インクルードパスを指定というより、
そのソースを含むlibcocos2dxライブラリの登録が必要なのか

9.
通常の手順で作られたcocos2dx用のandroid-studioプロジェクトには、libcocos2dxモジュールがプロジェクトビューに表示されている。
これは、
GAME_DIR/cocos2d/cocos/platform/android/libcocos2dx
ディレクトリである。
これを追加してみる。

cocos2d-x-3.7で作ったことのあるcocos2d-xプロジェクトから、
GAME_DIR/cocos2d/cocos/platform/androidディレクトリをまるっと上書きコピー

その上で、libcocos2dxを追加する


…と、ここまで来て
プロジェクトにモジュールを追加できなかった(追加するとき、libcocos2dxをプロジェクトとして追加してしまったようだ)
プロジェクト構成がおかしくなり、プロジェクトやディレクトリそのものを削除して再作成しても治らなくなった




そこで、結局新しいディレクトリでcocosプロジェクトごと新たに作ることにした
$ cocos new PROJ_NAME -p PACKAGE_NAME -l cpp

元のproj.androidから、新しいproj.android-studioにコピーするもの
Classes/
Resources/
proj.android/AndroidManifest.xml
proj.android/jni/
proj.android/app/src/
proj.android/libs/


ここまでコピーしたら、一度コンパイルしてみる
$ cocos compile -p android --android-studio


また、androidStudioだと、c++のスタティックライブラリにstring系が含まれていないので、
その対応も行う
参考


その他にやること

各種ライブラリをコピー

Analyticsに関して、
app_tracker.xml
EasyTrackerをAnalyticsApplicationに変更
など

PR
【2016/04/08 18:52 】 | cocos2d-x | 有り難いご意見(0)
<<Androidの時間設定公開 | ホーム | androidでcocosのリリースモードを作成>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>