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。。。。然后就。。。。程序打不开了~~~~~

  • 相关阅读:
    第六次上机作业
    NOIP2016 DAY1 T2天天爱跑步
    NOIP2009 T2 Hankson的趣味题
    NOIP2013 DAY2 T3火车运输
    线段树
    NOIP2012 DAY2 T2借教室
    NOIP2015 DAY2 T1跳石头
    NOIP2016 DAY2 T3 愤怒的小鸟
    文本编辑常用快捷键
    洛谷P1516 青蛙的约会
  • 原文地址:https://www.cnblogs.com/vokie/p/3602067.html
Copyright © 2011-2022 走看看