zoukankan      html  css  js  c++  java
  • cocos2dx项目To安卓android平台 移植成功后记录一笔

    经过一段时间的琢磨,终于搞定了cocos2dx到安卓平台的移植,现在把我成功的相关文件都贴下来,从一开始的环境看起~

    首先是下载android的NDK,然后配置环境:

    然后需要配置NDK_MODULE_PATH:

    图片上没有显示完全,具体如下:NDK_MODULE_PATH=D:/cocos2d-x-2.1.5;D:/cocos2d-x-2.1.5/cocos2dx/platform/third_party/android/prebuilt

    然后系统变量中的path配置里面,我配置了这两个:D:android-ndk-r9c;D:cygwinin

    这是我的android项目结构视图:

    我的Android.mk文件的配置如下:

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := cocos2dcpp_shared
    
    LOCAL_MODULE_FILENAME := libcocos2dcpp
    
    LOCAL_SRC_FILES := hellocpp/main.cpp 
                       ../../Classes/AppDelegate.cpp 
                       ../../Classes/BackGroundLayer.cpp 
                       ../../Classes/Box2dController.cpp 
                       ../../Classes/Box2dView.cpp 
                       ../../Classes/CarSelectorLayer.cpp 
                       ../../Classes/GameMenuLayer.cpp 
                       ../../Classes/GameScene.cpp 
                       ../../Classes/GLESRender.cpp 
                       ../../Classes/LoadingLayer.cpp 
                       ../../Classes/MoreGameOverScene.cpp 
                       ../../Classes/MoreGameScene.cpp 
                       ../../Classes/PauseGameDialogLayer.cpp 
    
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
    
    LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
    LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
    LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
    LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
    LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
    
    include $(BUILD_SHARED_LIBRARY)
    
    $(call import-module,cocos2dx)
    $(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
    $(call import-module,CocosDenshion/android)
    $(call import-module,extensions)
    $(call import-module,external/Box2D)
    $(call import-module,external/chipmunk)
    

    我的AndroidManifest.xml文件配置如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.cocos2dx.hellocpp"
          android:versionCode="1"
          android:versionName="1.0">
    
        <uses-sdk android:minSdkVersion="8"/>
        <uses-feature android:glEsVersion="0x00020000" />
    
        <application android:label="@string/app_name"
            android:icon="@drawable/icon">
    
            <activity android:name=".HelloCpp"
                      android:label="@string/app_name"
                      android:screenOrientation="landscape"
                      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                      android:configChanges="orientation">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <supports-screens android:largeScreens="true"
                          android:smallScreens="true"
                          android:anyDensity="true"
                          android:normalScreens="true"/>
                             
        <uses-permission android:name="android.permission.INTERNET"/>
    </manifest> 
    


    vs下面的cpp文件视图:

    需要注意的是:car.h这个文件我并没有在android.mk文件中配置它,因为他没有cpp文件,不过car.h在我的程序中是个很重要的代码~

    网上有人说eclipse下面的一些配置,我就把那些看似关键的地方,实际上没有配置任何东西的地方贴出来:

    下面这张图片,注意我画红线的地方,这里我们可以写个echo...我们可以现在cygwin中编译,然后在直接在eclipse里面运行就好了。

    需要注意的地方。


    如何编译build_native.sh文件,如下,可以用cygwin编译,觉得这样显得更cool一点,也可以直接用eclipse来编译

    Cygwin下面正常编译的过程:

    上面这些编译到底产生了什么东西呢,下面继续上图说明,我们可以在他编译的时候,看到我们的cocos2dx项目下面的目录(我下图红色标记)正在不断生成它编译的结果、

    编译过程有点久。需要耐心等待,我也在耐心等待它编完截图。。。。。wait。。。。。

    《既然它没有编完,我就说一个怎么让我们的游戏更好的适应屏幕的一句代码》

    -----------------------插播时间------------------------------------------------------------------------------------------

    bool AppDelegate::applicationDidFinishLaunching()
    {
        // 初始化
        CCDirector *pDirector = CCDirector::sharedDirector();
        pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
    CCEGLView::sharedOpenGLView()->setDesignResolutionSize(800, 480, kResolutionNoBorder); //就是这句代码!!!
    
        pDirector->setDisplayStats(true);
    
        pDirector->setAnimationInterval(1.0 / 60);
    
        // 创建游戏开始的菜单GameMenu
        CCScene *pScene = GameMenuLayer::scene();
    
        pDirector->runWithScene(pScene);
        return true;
    }

    具体的大家可以去网上查查我标记的那句代码。

    2.0版本提供了三种适配策略:
    kResolutionNoBorder:超出屏幕的部分会被裁剪,两侧没有黑边,铺满屏幕,按图片原始比例显示,图片不变形。
    kResolutionShowAll:整个游戏界面是可见的,会按原始比例进行缩放,图片不变形,但两侧可能会留有黑边,不铺满屏幕。
    kResolutionExactFit:整个游戏界面是可见的,图片可能会进行拉伸或者压缩处理,铺满屏幕,图片会变形。

    再贴一张我认为重要的图片:


    -----------------------------------------------------插播结束-------------------------------------------------------------------------------------

    继续刚刚的cygwin编译过程,我这里也编译完成了,(前提是你写的c++代码是可以被编译过去的,如果报错了,请注意看你的代码有没有报错哦)上图:

    这个时候我们可以看到刚刚出炉的libs/armeabi/libcocos2dcpp.so文件了,这就是我们辛苦这么久的结晶T.T

    然后apk吧,装到手机上运行起来,如果出现了无法打开,一定要注意读读logcat里面的内容,很大一部分是项目路径出现问题了,我就遇到过,调整了一下hellocpp.java文件的目录就好了,这个错误让我纠结很久。然后就有可能是你的资源文件读取失败的错误,比如你的资源文件是AAA.png,程序里你读取的文件名称可能是aaa.png。。。。然后就。。。。程序打不开了~~~~~

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/vokie/p/3602067.html
Copyright © 2011-2022 走看看