始めに
2016年頃にcocos2d-x ver2系のEclipseのプロジェクトを全てAndroid Studioに移行しました。
cocos2d-x ver2系のプロジェクトをAndroid Studioに移行する
そこで「Experimental Plugin」(実験的なプラグイン)使っていました。
http://tools.android.com/tech-docs/new-build-system/gradle-experimental
実験的な物は実験的なままで終わったようで、このプラグインは2017年10月でサポートが切れました。
代わりに外部の開発ツールとして、CMakeやndk-buildなどを使うように以下のページで推薦されています。
https://developer.android.com/studio/projects/add-native-code
ざっと見た感じでは、CMakeでcocos2d-xの作成したsoファイルをリンクするだけなら、簡単そうだったので、その方法でさらに以降を行いました。
2018年5月にその作業を行ったので、その手順をここでまとめています。
もし「Experimental Plugin」を使って移行している場合は、ここの手順でさらに移行が可能です。
そうでない場合はcocos2d-x ver2系のプロジェクトをAndroid Studioに移行するの「gradle関連の修正」の章を以下の記述を参考に差し替えるとAndroid Studioへの移行が可能でしょう。
Experimental Pluginの記述を取り除く
もしすでに「Experimental Plugin」を使っている場合はその記述を取り除きます。 もしそうでないなら、この章は飛ばしてください。
「Experimental Plugin」で付け加えたのは、「model」「apiLevel」「ndk」などで、以下のページを参考に、赤い部分を取り除けば良いでしょう。
http://tools.android.com/tech-docs/new-build-system/gradle-experimental
また、もし
android.useDeprecatedNdk = true
という行があるなら、それは取り除きます。
CMakeLists
.txtファイルを追加する
プロジェクトのルートにCMakeLists.txtというファイルを作成します。
プロジェクトのルートはAndroid Studioの左側のタブ「Project File」を選んだときに、「アプリ名/アプリ名」とか「proj.android/アプリ名」とかになっているディレクトリです。
場所を間違えても、後に出てくるexternalNativeBuild
の設定をgradleに書いてビルドすると、「そこにはそのファイルが無いよ」といったメッセージが出るので、何度か試せばすぐに正しい場所が分かるでしょう。
その中にライブラリをリンクする記述を加えます。 例えばcocos2d-xが作成するsoファイルのデフォルト名である「libgame.so」をリンクするなら、以下のようにします。
add_library( game STATIC IMPORTED )
add_libraryはライブラリの追加を表します。 一行目はライブラリ名です。 先頭の「lib」と拡張子の「.so」は省くという命名ルールがあるので、「libgame.so」なら上記のように「game」だけとなります。
二行目は共有ライブラリ(SHARED)か静的ライブラリ(STATIC)かを指定します。 両方試してみましたが、どちらでも動きます。 別に共有する必要は無いのでSTATICで良いでしょう。 add_libraryには本来はソースファイルを書きますが、今回はコンパイル済みのライブラリなので、「IMPORTED」と指定します。
最後に、プロジェクトに付随するgradle(「Module:アプリ名」と横に書いてあるgradleファイル)のAndroidセクションに以下のようにして、追加したCMakeLists.txtを指定します。
externalNativeBuild { cmake { path "CMakeLists.txt" } }
以上でライブラリの取り込みが行われるはずです。 gradleファイルをあまり変更しないので、「Experimental Plugin」を使うより簡単になっています。
Page Info | |
---|---|
Page Name : | cocos2d-x/ver2系CMakeを使ってAndroid Studioに移行する |
Page aliases : | None |
Page owner : | njf |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | All visitors |
Users : | All visitors |