详细解读Cocos2d Android 项目的生成与运行中存在的问题

    作者:课课家教育更新于: 2019-03-25 16:09:05

      对于Cocos2D-Android,估计很多同学都不甚了解,本篇教程将带你详细解读Cocos2D-Android项目的生成与运行中存在的问题。

      通过构建了Cocos2d的Android开发和build环境

      貌似运行了几个批处理,但实际遇到若干问题,通过分析其内部机制才得以解决

      生成项目

      运行create-android-project.bat看看此批处理做的事情:

      1)用AndroidSDK的android.batcreate生成空eclipse项目

      call"%_ANDROIDTOOLS%\\android.bat"createproject-n%_PROJECTNAME%-t%_TARGETID%-k%_PACKAGEPATH%-a%_PROJECTNAME%-p%_PROJECTDIR%\\proj.android

      2)用android.batupdate填充项目

      call"%_ANDROIDTOOLS%\\android.bat"updateproject-l../../cocos2dx/platform/android/java-p%_PROJECTDIR%\\proj.android

      就是把cocos2dx/platform/android/java中的文件(Cocos2dxActivity.java,Cocos2dxBitmap.java,etc.)copy到空项目中

      3)复制文件其他项目文件

      create-android-project.bat调用了cygwin的脚本去复制文件(cocos2d-2.1rc0-x-2.1.2\\template\\android\\copy_files.sh)

      a)复制helloworld

      #from Hello World copy src and jni to app_DIR

      copy_src_and_jni(){

      cp-rf$HELLOWORLD_ROOT/proj.android/jni$APP_DIR/proj.android

      cp-rf$HELLOWORLD_ROOT/proj.android/src$APP_DIR/proj.android

      #replaceAndroid.mk

      sh$COCOS2DX_ROOT/template/android/gamemk.sh$APP_DIR/proj.android/jni/Android.mk$NEED_BOX2D$NEED_CHIPMUNK$NEED_lua

      }

      还要copybuild_native.sh等等

      现在生成的项目结构是

      AppHome------Classes(HelloWorldScene.cpp,AppDelegate.cpp.etc)

      ------proj.android(eclipse的项目结构)

      ------Resources(helloworld.png.etc)

      编译Native

      用cygwin进入目录proj.android,而后运行build_native.sh,它做的事情如下:

      1)把Resources下的图片copy到proj.android/asset下

      2)而后执行ndk-build,目标是运行proj.android/jni/Android.mk

      --------------Android.mk---------------

      LOCAL_PATH:=$(callmy-dir)

      include$(CLEAR_VARS)

      LOCAL_MODULE:=game_shared

      LOCAL_MODULE_FILENAME:=libgame本module是生成libgame

      本module直接包含的文件

      LOCAL_SRC_FILES:=hellocpp/main.cpp\\

      ../../Classes/AppDelegate.cpp\\

      ../../Classes/HelloWorldScene.cpp

      LOCAL_C_INCLUDES:=$(LOCAL_PATH)/../../Classes

      LOCAL_WHOLE_STATIC_LIBRARIES:=cocos2dx_staticcocosdenshion_staticcocos_extension_static本module依赖的静态库

      include$(BUILD_SHARED_LIBRARY)

      $(callimport-module,CocosDenshion/android)\\引入CocosDenshion/android/Android.XML生成cocosdenshion_static

      $(callimport-module,cocos2dx)\\引入cocos2dx/Android.xml生成cocos2dx_static(libcocos2d.a)

      $(callimport-module,extensions)引入extensions生成cocos_extension_static

      如果你看见最后一行buildlog如下:你build成功了

      Install:libgame.so=>libs/armeabi/libgame.so

      最总生成proj.android/libs/armeabi/libgame.so,包含所有的native

      最后在eclipseimport项目就可可以编译了

      问题

      但可能由于Cocoscopyfiles做得不完善,可能存在若干问题

      1)eclipse中org.cocos2dx.lib下面没有看见文件,但用win资源管理器能看到文件,但没有权限打开

      可以删除这些,在直接cocos2dx/platform/android/java复制

      2)运行create-android-project.bat时,log提示某些目录或文件权限不够

      干脆以管理员权限运行

    详细解读Cocos2d Android 项目的生成与运行中存在的问题_Cocos2D-Android_Cocos2D-Android教程_Cocos2D-Android项目生成_课课家

     

      3)有的文件因为权限不够而没有编译,但系统不给错误信息

      比如hellocpp/main.cpp,没有编译,运行后Frame大小不对

      修改main.cpp权限,再次编译

      如果生成项目再出现问题,相信也可以用直接手工copyfile的方法解决了

课课家教育

未登录