Cocos 2 d-x教程(38)-iOS移植Android


Cocos 2 d-x交流グループへようこそ.193411763
転載する時は原文の出所を明記してください.http://blog.csdn.net/u012945598/article/details/44338659
----------------------------------------------------------------------------------------------------------------------------------------------------------
筆者の開発環境:
       Mac OS X 10.9.5 
       Cocos 2 d-x 3.3 finalバージョン
       Xcode 6.1.1バージョン
       
       この文章は主に移植中に発生した問題を記録します.
(1)Android.mkファイルを修正する
       筆者のプロジェクトはLuaに基づいていますが、以前の記事では、LuaのプロジェクトとC++のプロジェクトのファイル構造が違っています.相対的にC++の工程移植の手順は簡単です.C++プロジェクトまたはLuaプロジェクトに関わらず、Android.mkファイルを修正するには必ず行うべきです.このファイルのディレクトリはLuaプロジェクトにあります. プロジェクトファイル/fram ewarks/runtime-src/proj.android/jni/Android.mk.C++のプロジェクトは直接プロジェクトのプロジェクトファイルを開けばproj.androidフォルダが見られます.
       ここでは、空いているC++ハロルドプロジェクトと空っぽのLuaプロジェクトの違いを比較してみてください.ここでは、筆者のプロジェクトの最後のAndroid.mkファイルを参考にしてください.
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)


LOCAL_MODULE := cocos2dlua_shared

LOCAL_MODULE_FILENAME := libcocos2dlua

define walk
  $(wildcard $(1)) $(foreach e,$(wildcard $(1)/*),$(call walk,$(e)))
endef

ALLFILES  = $(call walk,$(LOCAL_PATH)/../../Classes)

FILE_LIST := hellolua/main.cpp
FILE_LIST += $(filter %.cpp,$(ALLFILES))
FILE_LIST += $(filter %.c,$(ALLFILES))


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

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ )
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES:$(LOCAL_PATH)/%:=$(LOCAL_PATH)/%)

					
LOCAL_STATIC_LIBRARIES := cocos2d_lua_static
LOCAL_STATIC_LIBRARIES += cocostudio_static
LOCAL_STATIC_LIBRARIES += cocos2dx_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,scripting/lua-bindings/proj.android)
以上は筆者の現在のプロジェクトの中の完全なAndroid.mkファイルです.
(2)コンパイル中にファイルが見つからない問題
       mkファイルが修正されたら、クロスコンパイルの過程で、XXファイルが見つからないかもしれません.ここのファイルはCococosの中のいくつかのファイルを指しています.例えば、筆者はプロジェクトの中でGUIを使ってCocococococosGUI.hのヘッダファイルを導入しましたが、コンパイルする時に見つけられません.この問題を解決する方法は、このヘッダファイルのパスを補完することであり、例えばCocococosGUI.hは3.3バージョンの中でuiフォルダの下に位置しているので、引用の際には、啳include「ui/CococosGUI.h」と書く必要がある.iOS項目ではuiを書かないとエラーが発生しませんが、コンパイル時に問題が発生します.
(3)カスタムLuaバインディング問題.
      私たちはLuaのプロジェクトでは、C++とLuaの相互作用の問題に遭遇します.この時、私たちはC++のいくつかの方法をLuaにマッピングします.つまり、lua_を使います.bindingもしあなたがカスタムC++メソッドをLuaにバインドしていないなら、この問題は完全に無視できます.もしバインディングしたら、もう一つのmkファイルを修正してコンパイルを完了する必要があります.
     プロジェクトファイル名/frame eworks/cocococococos 2 d-x/cococococococococos/scripting/lua-bindings/proj.android/Android.mkを開く 
     lua_に対してbindingsプロジェクトファイルの中でコンパイルが必要なすべてのC++ファイルはこのmkファイルの中で完成しました.私達が必要なのは適切な位置で私達がカスタマイズしたマッピングファイルを中に入れます.
      Cocos2d-x教程(38)-iOS移植Android_第1张图片
(4)マッピングファイルの引用ヘッダファイルの問題
      私達のカスタムマッピングファイルでは、必ずプロジェクトのClassフォルダのcppファイルを参照してください.ここでは、単に「xx.h」と書くだけであれば、iOSでは問題ないですが、コンパイルする時にも、このxxxファイルが見つからないように注意します.ここに加えなければならないのはこのファイルの全パスです.例えば、xxx.hファイルを導入したいなら、このファイルを見つけて、右ボタンでプロファイルを表示します.表示される経路はここに書くべき経路です.ここで一番いい方法はファイルの全パスを得るための方法を書くことです.そうでなければ、ローカルで書き込みが行われていないとバージョン管理に問題が発生します.
(5)リソースファイル名
      iOSのリソースは中国語名が使えますが、名前は中国語ではなく、iOSでは問題ないということは普通の人は知っていますが、クロスコンパイルでは中国語の名前を付けたリソースを使っても同じです.
(6).cファイル
     筆者の最初の質問の一つに、FILE_という行があります.LIST+=$(filter%c,$(ALL FILES)
     これは筆者のプロジェクトではcjsonライブラリを使っていますが、cjsonではCのソースファイルを使っていますので、コンパイルする時はC++をコンパイルするだけでは足りません.まだ正しいです.cファイルのコンパイルが必要です.でないと、使えません.