Eclipse + ADT & Cocos2d-x で作ったプロジェクトを Android Studio に移行する


注意:
表題の必要が出てきたので、試してみるつもりですが、上手く行かないことは想定済み。
何をやってダメだったか、あとで検証するための工程メモみたいなものなので、斜め読みしてマネしないで下さい。


環境:
Cocos2d-x 3.11
旧Cocos2d-x 3.6
Android Studio 2.11
pd-for-android (PdCore) 1.0.1
MacOSX


1. cocos new で、新たにプロジェクトを作る
既存のプロジェクトを cocos new で生成したときは、proj.android-studio というフォルダが作られていなかったので、新たに cocos new する必要がありそげ。
上手くすれば、Classes と Resources の中身を入れ替えるだけでいいんじゃね? とか、虫の良いことを考える。


2. Android Studio へプロジェクトの読み込み
いつもの手順、「Open an existing Android Studio project」 で proj.android-studio を読み込む。

3. proj.android-studio/app/jni/Android.mk と Application.mk の書き換え
こちらもいつもの手順。

Android.mk

LOCAL_SRC_FILES := hellocpp/main.cpp \
                  ../../../Classes/AppDelegate.cpp \
                   ../../../Classes/HelloWorldScene.cpp



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


に書き換え。


LOCAL_STATIC_LIBRARIES += cocos_extension_static

$(call import-module, extensions)


をそれぞれの位置に追加。

Application.mk


APP_PLATFORM = android-14

APP_ABI:=armeabi armeabi-v7a x86


を追加。


4. Android Studio の Terminal から cocos compile -p android --android-studio の実行 & Android Studio で Build > Clean project して Run
Cocos2d-x のロゴと「Hello World」の表示を確認。


5. pd-for-android(pd-core-1.0.1.aar) の読み込みと、build.gradle へ compile 'org.puredata.android:pd-core:1.0.1' の追記。
詳しい手順はこちら。一応、Run して動作確認。


6. Classes と Resources を、旧プロジェクトから新プロジェクトへコピペして cocos compile -p android --android-studio する
Run する。当然エラー。


7. 旧プロジェクト/proj.android/src/org/cocos2dx/cpp/AppActivity.java の内容を、新プロジェクトの AppActivity.java にコピペして Run
当然、エラー。見たことがあるようなエラーだったので、File > Project Structure で、アプリの Dependencies に appcompat-v7 と、support-v4 を追加してみる。
ついでに、アプリの build.gradle の、compileSdkVersion と targetSdkVersion を 23 に変更。


8. 旧プロジェクト/proj.android/AndroidManifest.xml の内容から、必要な箇所をコピペして Run
当然、エラーが出るものの、エラー内容が変わる。
自作の JNI 関数が解決できないと言われているもよう。


9. おっと、忘れた。Pd パッチを拡張子なしで、proj.android-studio/app/res/raw にコピペしなきゃ。ってか、旧プロジェクトporj.android/res フォルダの中身を、proj.android-studio/app/res へコピペ。

で、Run 。debug/AndroidManifest.xml の android:icon="@mipmap/ic_launcher" の ic_launcher と同じ名前がないと言ってるもよう。
うむ、res/drawable-xxxx の中には icon.png ってファイルしかないからね。
そう言われれば、Eclipse のときに ic_launcher の 名前を変えるというような作業をやったような気がするようなしないような。
Android Studio ではどうやるのか良く分からないので、android:icon="@mipmap/ic_launcher" の ic_kauncer を icon に書き換えて Clean project してみるも、手動で書き換えらないようなので、同じエラーが出る。
しょうがないので、icon.png を ic_launcher.png にリネームして Clean project 。
けど、エラーが変わらず。

以前、テストで新規作成してたアプリの .proj.android-studio/app/res を確認すると、drawable-xxxx が、mipmap-xxxx になっていたので、フォルダ名を変更。


10. つまり、res/drawable-xxxx/ic_launcher を、res/mipmap-xxxx/ic_launcher.png に変更して、Clean project して Run。
Error:The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html

ネッツ検索で、こちら様のサイト を参考にして、アプリの AndroidManiest.xml と build.gradle に追加。

AndroidManifest.xml

    <application

        android:name="android.support.multidex.MultiDexApplication"
    >



アプリの build.gradle

    defaultConfig {

        // Enabling multidex support.
        multiDexEnabled true
    }


dependencies {

    compile 'com.android.support:multidex:1.0.0'
}



で、Run したら、一応、実行できました。
基本、コピペで行けそうなので、良かった。

ダイアログ関係で、ちょっと表示系が変わっているのは cocos のバージョンが違うからかしら?


スポンサーサイト

コメント

非公開コメント