cocos2d-x x-pluginのメモ(3)
自メモ)
カスタムPlugin&IOS側もつくらないと駄目っぽいのでとりあえずエントリだけ作っておく
カスタムPlugin
cocos2d-x 3.0 alpha 1 において plugin を作るまでの経緯メモ (環境構築編) - ※あくまで経緯を記したメモなので、動かないかもしれません。 以下のページを参考に作業を行いました。... URL
概略は 間違ってないんだけど何点か注意点はあって
- 既存のPluginはjarがsdkというフォルダに入れてるがlibsに変更
ForManifest.xml というファイル、これはあくまでコピペ用のサンプルらしい- これはcocos2d-xの仕組みで自動的にくっつけてくれると夢想していた時期もありました(苦笑
PS)
TLで補足いただきました。感謝です
ぬ。ForManifest.xml って toolsForGame/modifyManifest.py で参照してどんどん append されているっぽいコードだったから使われていると思ったら使われていないのか…。
いや、やっぱりForManifest.xml って tools/toolsForGame/addPluginForGame.sh で呼ばれる modifyManifest.py で使われているよな…。
でもまだ実行させていないので、一旦プロジェクトに plugin を追加するところまで作業をしてから言及すべきだな。
自分もintegrationガイドだけ見てて
- publish.sh 等でコンパイルするまで
- pluginをlibrary-projectとしてimport
toolsのフォルダの存在気付かなかった(汗。
うーん。やっぱりdocumentが無いと厳しいんだよな(苦笑
あとで評価はしてみよう。
=>
一応
- $COCOS2DX_HOME/plugin/tools/toolsForGame/addPluginForGame.sh
# get system dir SYS_TARGET_ROOT=$(getPathForSystem ${TARGET_ROOT}) SYS_SHELL_DIR=$(getPathForSystem ${SHELL_DIR}) SYS_PROJ_DIR=$(getPathForSystem ${GAME_PROJECT_DIR}) # Modify .project file (link publish directory to the game project) PROJECT_FILE_PATH="${SYS_PROJ_DIR}"/.project python ${SYS_SHELL_DIR}/modifyProject.py "${PROJECT_FILE_PATH}" "${SYS_TARGET_ROOT}" # Modify .classpath file (link jar files for game project) CLASSPATH_FILE="${SYS_PROJ_DIR}"/.classpath python ${SYS_SHELL_DIR}/modifyClassPath.py "${CLASSPATH_FILE}" "${NEED_PUBLISH}" "${SYS_TARGET_ROOT}" # Modify AndroidManifest.xml file (add permission & add activity info) MANIFEST_FILE="${SYS_PROJ_DIR}"/AndroidManifest.xml python ${SYS_SHELL_DIR}/modifyManifest.py "${MANIFEST_FILE}" "$2" "${SYS_TARGET_ROOT}"
となってるのでざっくり見てみたけど
を編集する想定らしい。
これADT18以前じゃないと動かない気がする
- この修正方法だとlibraryproject形式じゃないからデバックできない
- これならjarをmainProjectにコピーする形のほうがいい気がする
- res 辺りに置いたリソースが参照されない。
- もちろん公式docのようにlibrary-projectで参照するなら参照は可能
上記の addPluginForGame.sh 遣ったら環境壊れるはず
これjsbとか改変しない用なのかな?
あと
lib/XXX.jar や sdk/XXX.jar ってeclipse上での参照
apk転送時に同梱されずにコケるはずなんだが
あんまりフォーラムで見ないということは
Andでやってる人殆ど居ないのかもね−(汗
まあIDE使わない前提であれば
各pluginの build.xml 内で
<import file="${plugin.dir}/tools/android/build_common.xml" />
<!-- link jar files --> <property name="myjar.libs.dir" value="./sdk" /> <target name="-pre-compile" depends="check-dependens"> <path id="depend.projects.jar"> <fileset file="${project.jar.1}" /> <fileset file="${project.jar.2}" /> </path> <if condition="${jarExisted}"> <then> <path id="project.all.jars.path"> <path refid="depend.projects.jar" /> <fileset dir="${myjar.libs.dir}" includes="*.jar" /> </path> </then> </if> </target>
って形でsdkディレクトリがあればpath通す処理はしてるのでant buildはOKだとは思う
コレには凄い同意。。winで動かそうとして辛い=>macでな流れで遣ってたりしてるし。自分は
でもこの人ぐらいしか3系のつぶやき見たこと無いな−。*1
JSBでやってるっていってる人自体は
ちらほらTL上でも見ることは見るけど。。。
TLメモ @mezumona さん)
android で ogg vorbis は再生できた。windows, ios 上ではたぶんそのままじゃ再生できないから、後で読み込む方法をググっておこう。
はて。cc.AudioEngine で音を再生するのは難なくできたが、再生時間の取得ってどうするのだ…。
うーん。どうやら cocos2d-x は SimpleSoundEngine しか実装していないっぽいな…。
うーん。cocos2d-x の FileUtils はファイルを char* で返してくるのだが、こいつから int やら float を切り出して読み込むのは良いとして、UTF-8 の文字列をどうやって読み出せばいいのだ…。そのまま char に押し込んだら文字化けするし…。
@mezumona 文字は別で扱うべき。UTFとcharの混在は、経験的に言って、非常に困難。
2013-12-13 10:09:34 via web to @mezumona
@unko_kun 用意されているファイル読み込み API が unsigned char * でしか返してくれないので…。出来れば、1 ソースで行きたいところですが、プラットフォーム別にコードを書く事になりそうですよね。
2013-12-13 12:59:20 via TweetDeck to @unko_kun
もしかして : 日本語使うな。
p = FileUtils->getFileData();std::string str;str.append((char*) p);istringstream ss(str);ってしているな…。
うーん。文字コード対応は後に回そう。先に本質的な方から作らねば。という事で javascript を弄る作業にやっと戻る。
わーい。文字化けしないよ!文字化けしないよ…。何だったのだ、この時間は。
TLメモ)
できたー。Build PhasesのCopy Headerにヘッダファイルを登録した。 “@flarephoenix: Xcodeで同じworkspaceの違うprojectのheaderをimportするのって、どうやるんでしたっけ。.hを登録してもエラーが出る。”
Unityとcocos2d-xのpluginのソースを共通化しようと思ったんだけど、文化的にcocos2d-xの関数名はlowerCamelCase、Unityのメソッド名はUpperCamelCaseな気がする。共有するには非常に気持ち悪い。
*1:すごく感謝してます