ページへ戻る
印刷
cocos2d-x ver2系のプロジェクトをAndroid Studioに移行する
をテンプレートにして作成 ::
NJF Wiki
xpwiki
:cocos2d-x ver2系のプロジェクトをAndroid Studioに移行する をテンプレートにして作成
開始行:
*はじめに
&font(Red){重要:ここで使っている「Experimental Plugin」...
cocos2d-xがver3になってからかなり経ちますが、2から3への移...
2016年の夏にその作業を行ったので、その時の知見をまとめま...
**注意
今後cocos2dx ver2系で新たにアプリを作る予定はなく、さらに...
そのため、もっと良い方法があるかも知れませんので、よりき...
*eclipseのプロジェクトをインポートする
**バックアップ
eclipseのプロジェクトをAndroid Studioでインポートすると、...
そのため、万一の時のために作業のはじめには必ずもとのeclip...
**eclipseで開いて確認する
Android Studioにインポートするには、もとのeclipseのプロジ...
メモしたライブラリは後でAndroid Studioでインポートしてか...
今までeclipseで開発していたのだからエラーは無いはず、と思...
**Android Studioからインポート
Android Studioのメニュー「File->New->Import Project」を選...
インポート先のディレクトリも先ほどのディレクトリと同じに...
これでbuild_native.shなどがそのまま残るため、これを使って...
ただし、Application.mkやassetsなどのフォルダがインポート...
このままbuild_native.shを実行すると以下のようなエラーが出...
Android NDK: Check that /YOUR_PATH/libs/cocos2dx/platfor...
/YOUR_PATH/ndk-bundle/build/core/prebuilt-library.mk:45:...
これは最新のNDKは「arm64-v8a」というアーキテクチャでコン...
古いアーキテクチャでコンパイルするように指定するために、j...
APP_ABI := armeabi
前述のようにAndroid Studioから修正できるApplication.mkと...
このAPP_ABIを変えることによっていろいろなアーキテクチャに...
これでbuild_native.shは動くのですが、出力されるlibgame.so...
まずbuild_native.shの中の「assets」を「app/src/main/asset...
次に出力されたlibgame.soをAndroid Studioが読み込む場所に...
cp $APP_ANDROID_ROOT/libs/armeabi/libgame.so $APP_ANDROI...
(長いので折り返されていますが、一行です)
こちらもappの部分はプロジェクトによって変わることがありま...
これでコンパイルされ、リソースのコピーも行われるようにな...
*gradle関連の修正
&font(Red){重要:ここで使っている「Experimental Plugin」...
[[cocos2d-x/ver2系CMakeを使ってAndroid Studioに移行する]]
&font(Red){CMakeを使う場合は、上の記事を参考にしてこの章...
Android Studioにインポートすると以下のようなエラーが出ま...
Error:(12, 0) NDK integration is deprecated in the curre...
Consider trying the new experimental plugin
Set "android.useDeprecatedNdk=true" in gradle.properties...
これはNDK関連のプラグインが古いので、新しい実験的なのを試...
こちら([[Experimental Plugin User Guide:http://tools.and...
まず、./gradle/wrapper/gradle-wrapper.propertiesを変更し...
最後のdistributionUrlを最新の物とします。しかし、これはAn...
distributionUrl=https\://services.gradle.org/distributio...
次に実験的なツールを使うためにプロジェクト直下のbuild.gra...
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
}
となっているところを
dependencies {
classpath "com.android.tools.build:gradle-experimenta...
}
と変更します。
このとき「0.7.3」はgradleのバージョンによってことなり、[[...
|Plugin Version|Gradle Version|
|0.1.0|2.5|
|0.2.0|2.5|
|0.3.0-alpha3|2.6|
|0.4.0|2.8|
|0.6.0-alpha1|2.8|
|0.6.0-alpha5|2.10|
|0.7.0-alpha1|2.10|
|0.7.0|2.10|
|0.7.3|2.14.1|
たとえば「2.14.1」に対しては「0.7.3」なのでそれを指定しま...
さらに/app/build.gradleも「[[Experimental Plugin User Gui...
たくさん書いてありますが、このうち実際に必要なのはbuildTy...
apply plugin: "com.android.model.application"
model {
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "jp.njf.MyGame"
minSdkVersion.apiLevel 10
targetSdkVersion.apiLevel 22
ndk {
moduleName "game_shared"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file("proguard-rules.pr...
}
}
}
}
(以下dependenciesなど)
一行目の「apply plugin」や「minSdkVersion」「targetSdkVer...
また、モジュールのgradleファイルの変更も必要です。
例えば、Google Play Serviceのランキングなどを使う時に必要...
apply plugin: 'com.android.model.library'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
dependencies {
compile 'com.google.android.gms:play-services-plus:9...
compile 'com.google.android.gms:play-services-ads:9.+'
compile 'com.google.android.gms:play-services-games:...
compile 'com.android.support:recyclerview-v7:24.+'
compile 'com.android.support:appcompat-v7:24.+'
}
model {
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
}
}
最初の「apply plugin」が変更され、他に「android」が「mode...
*Manifestファイルからsdkのバージョンを取り除く
いつ頃からか分かりませんが、Manifestファイルからsdkのバー...
エラーメッセージをクリックすれば取り除いてくれることもあ...
手で消した方が早いでしょう。
* ライブラリなどの調整
インポートの時に参照がうまくいっているとモジュールとして...
%%このとき、後述のCocos2dxBitmapでのエラーを避けるため、...
規約の変更や広告SDKなど外部ライブラリの都合などにより、AP...
%%一方、jarファイルの方が一つjarを作るプロジェクトを作っ...
%%どちらでも好きな方を選択してください。%%
あとは他の必要なライブラリを取り込んであれば、ひとまずビ...
*移行時によくあるエラー
移行時によく起こるエラーとして以下の物があります。
** Google Play Servicesのゲームサービスで使うBaseGameUtil...
BaseGameUtilsをインポートして使おうとすると以下のエラーが...
uses-sdk:minSdkVersion 1 cannot be smaller than version ...
%%BaseGameUtilsの中のAndroidManifest.xmlにuses-sdkがない...
現在ではManifestにSDKのバージョンを入れること自体が推奨さ...
** Cocos2dxBitmapクラスのFloatMathでエラー
API level 22よりdeprecatedになったので、FloatMathをMathに...
**HttpClientのエラー
HttpClientはFroyo以降では使えなくなるので、使っていた場合...
詳しくは[[Android/HttpClientからHttpURLConnectionへ移行す...
**dex関連のエラー
Google Play Serviceの機能が増えたので、これをそのまま取り...
**「getdtablesize」に関するエラー
Android NDKのバージョンを下げるとうまくいきます。詳しくは...
[[cocos2d-x/ver2系のプロジェクトで「getdtablesize」に関す...
**BaseGameUtilsのエラーその2
古いBaseGameUtilsを使っていると、Google Play Serviceを新...
**android.permission.READ_PHONE_STATEのパーミッションが付...
android.permission.READ_PHONE_STATEのパーミッションがある...
これは、gradleファイルでminSdkVersionやtargetSdkVersionを...
よって、このエラーが発生したときは、全てのgradleファイル...
*Google Play Serviceについての注意
Google Play Serviceについては古いバージョンにくらべてメソ...
ゲームではadmobを使っていれば
compile 'com.google.android.gms:play-services-ads:9.+'
ゲームサービスを使っている場合、
compile 'com.google.android.gms:play-services-games:9.+'
compile 'com.google.android.gms:play-services-plus:9.+'
以上の3つぐらいで問題ないでしょう。バージョンは「9.+」と...
他にメソッドが大幅に増えたライブラリがなければ、cocos2dx ...
終了行:
*はじめに
&font(Red){重要:ここで使っている「Experimental Plugin」...
cocos2d-xがver3になってからかなり経ちますが、2から3への移...
2016年の夏にその作業を行ったので、その時の知見をまとめま...
**注意
今後cocos2dx ver2系で新たにアプリを作る予定はなく、さらに...
そのため、もっと良い方法があるかも知れませんので、よりき...
*eclipseのプロジェクトをインポートする
**バックアップ
eclipseのプロジェクトをAndroid Studioでインポートすると、...
そのため、万一の時のために作業のはじめには必ずもとのeclip...
**eclipseで開いて確認する
Android Studioにインポートするには、もとのeclipseのプロジ...
メモしたライブラリは後でAndroid Studioでインポートしてか...
今までeclipseで開発していたのだからエラーは無いはず、と思...
**Android Studioからインポート
Android Studioのメニュー「File->New->Import Project」を選...
インポート先のディレクトリも先ほどのディレクトリと同じに...
これでbuild_native.shなどがそのまま残るため、これを使って...
ただし、Application.mkやassetsなどのフォルダがインポート...
このままbuild_native.shを実行すると以下のようなエラーが出...
Android NDK: Check that /YOUR_PATH/libs/cocos2dx/platfor...
/YOUR_PATH/ndk-bundle/build/core/prebuilt-library.mk:45:...
これは最新のNDKは「arm64-v8a」というアーキテクチャでコン...
古いアーキテクチャでコンパイルするように指定するために、j...
APP_ABI := armeabi
前述のようにAndroid Studioから修正できるApplication.mkと...
このAPP_ABIを変えることによっていろいろなアーキテクチャに...
これでbuild_native.shは動くのですが、出力されるlibgame.so...
まずbuild_native.shの中の「assets」を「app/src/main/asset...
次に出力されたlibgame.soをAndroid Studioが読み込む場所に...
cp $APP_ANDROID_ROOT/libs/armeabi/libgame.so $APP_ANDROI...
(長いので折り返されていますが、一行です)
こちらもappの部分はプロジェクトによって変わることがありま...
これでコンパイルされ、リソースのコピーも行われるようにな...
*gradle関連の修正
&font(Red){重要:ここで使っている「Experimental Plugin」...
[[cocos2d-x/ver2系CMakeを使ってAndroid Studioに移行する]]
&font(Red){CMakeを使う場合は、上の記事を参考にしてこの章...
Android Studioにインポートすると以下のようなエラーが出ま...
Error:(12, 0) NDK integration is deprecated in the curre...
Consider trying the new experimental plugin
Set "android.useDeprecatedNdk=true" in gradle.properties...
これはNDK関連のプラグインが古いので、新しい実験的なのを試...
こちら([[Experimental Plugin User Guide:http://tools.and...
まず、./gradle/wrapper/gradle-wrapper.propertiesを変更し...
最後のdistributionUrlを最新の物とします。しかし、これはAn...
distributionUrl=https\://services.gradle.org/distributio...
次に実験的なツールを使うためにプロジェクト直下のbuild.gra...
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
}
となっているところを
dependencies {
classpath "com.android.tools.build:gradle-experimenta...
}
と変更します。
このとき「0.7.3」はgradleのバージョンによってことなり、[[...
|Plugin Version|Gradle Version|
|0.1.0|2.5|
|0.2.0|2.5|
|0.3.0-alpha3|2.6|
|0.4.0|2.8|
|0.6.0-alpha1|2.8|
|0.6.0-alpha5|2.10|
|0.7.0-alpha1|2.10|
|0.7.0|2.10|
|0.7.3|2.14.1|
たとえば「2.14.1」に対しては「0.7.3」なのでそれを指定しま...
さらに/app/build.gradleも「[[Experimental Plugin User Gui...
たくさん書いてありますが、このうち実際に必要なのはbuildTy...
apply plugin: "com.android.model.application"
model {
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "jp.njf.MyGame"
minSdkVersion.apiLevel 10
targetSdkVersion.apiLevel 22
ndk {
moduleName "game_shared"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file("proguard-rules.pr...
}
}
}
}
(以下dependenciesなど)
一行目の「apply plugin」や「minSdkVersion」「targetSdkVer...
また、モジュールのgradleファイルの変更も必要です。
例えば、Google Play Serviceのランキングなどを使う時に必要...
apply plugin: 'com.android.model.library'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
dependencies {
compile 'com.google.android.gms:play-services-plus:9...
compile 'com.google.android.gms:play-services-ads:9.+'
compile 'com.google.android.gms:play-services-games:...
compile 'com.android.support:recyclerview-v7:24.+'
compile 'com.android.support:appcompat-v7:24.+'
}
model {
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
}
}
最初の「apply plugin」が変更され、他に「android」が「mode...
*Manifestファイルからsdkのバージョンを取り除く
いつ頃からか分かりませんが、Manifestファイルからsdkのバー...
エラーメッセージをクリックすれば取り除いてくれることもあ...
手で消した方が早いでしょう。
* ライブラリなどの調整
インポートの時に参照がうまくいっているとモジュールとして...
%%このとき、後述のCocos2dxBitmapでのエラーを避けるため、...
規約の変更や広告SDKなど外部ライブラリの都合などにより、AP...
%%一方、jarファイルの方が一つjarを作るプロジェクトを作っ...
%%どちらでも好きな方を選択してください。%%
あとは他の必要なライブラリを取り込んであれば、ひとまずビ...
*移行時によくあるエラー
移行時によく起こるエラーとして以下の物があります。
** Google Play Servicesのゲームサービスで使うBaseGameUtil...
BaseGameUtilsをインポートして使おうとすると以下のエラーが...
uses-sdk:minSdkVersion 1 cannot be smaller than version ...
%%BaseGameUtilsの中のAndroidManifest.xmlにuses-sdkがない...
現在ではManifestにSDKのバージョンを入れること自体が推奨さ...
** Cocos2dxBitmapクラスのFloatMathでエラー
API level 22よりdeprecatedになったので、FloatMathをMathに...
**HttpClientのエラー
HttpClientはFroyo以降では使えなくなるので、使っていた場合...
詳しくは[[Android/HttpClientからHttpURLConnectionへ移行す...
**dex関連のエラー
Google Play Serviceの機能が増えたので、これをそのまま取り...
**「getdtablesize」に関するエラー
Android NDKのバージョンを下げるとうまくいきます。詳しくは...
[[cocos2d-x/ver2系のプロジェクトで「getdtablesize」に関す...
**BaseGameUtilsのエラーその2
古いBaseGameUtilsを使っていると、Google Play Serviceを新...
**android.permission.READ_PHONE_STATEのパーミッションが付...
android.permission.READ_PHONE_STATEのパーミッションがある...
これは、gradleファイルでminSdkVersionやtargetSdkVersionを...
よって、このエラーが発生したときは、全てのgradleファイル...
*Google Play Serviceについての注意
Google Play Serviceについては古いバージョンにくらべてメソ...
ゲームではadmobを使っていれば
compile 'com.google.android.gms:play-services-ads:9.+'
ゲームサービスを使っている場合、
compile 'com.google.android.gms:play-services-games:9.+'
compile 'com.google.android.gms:play-services-plus:9.+'
以上の3つぐらいで問題ないでしょう。バージョンは「9.+」と...
他にメソッドが大幅に増えたライブラリがなければ、cocos2dx ...
ページ名: