android 接入移动基地SDK

android 接入移动基地SDK

可以说移动基地不可能所有的开发工具每个版本都试过接入,在接入中难免有一些问题,特别是cocos2dx这种每个版本变化挺多的引擎工具。
新建一个工程来测试,一步步接入。

  • 工程环境:cocos2dx3.3的工程,在eclipse下接入:游戏单机SDK ,版本AndGame.Sdk_v20121
  • 参考它的开发文档:和游戏单机SDK开发文档(Android版)

  • 1.新建cocos2dx3.3的工程:命名为packageSDK,包名为com.packagesdk.gsky

  • 2.我们一步一步的按照开发文档操作,并说明开发文档中哪些是重复操作,哪些需要修改
  • 3.文档中没有说到的可能错误

  • 1.新建工程,不讲述

  • 2.接入SDK
    我们打开eclipse导入pro.android工程(我们执行下面的操作后,在eclipse右键->Refresh就可以刷新)

    按文档2.2节:集成步骤
    SDK开发资源包:SDK目录中包含SDK的资源文件,请复制SDK目录中的所有目录与文件,并拷贝至各自的游戏工程中),如下:
    1)拷贝API
    A)拷贝NativeAPI —–将SDK/libs目录中的文件全部拷贝到游戏libs下。
    B)拷贝JAVAAPI——-将SDK/runtime目录文件, 直接复制到游戏根目录下。 切勿将runtime下面的jar文件放入libs下面编译,否则会报编译错误,例如:bad range…(不同编译环境均需要按照此要求引用此jar,如遇编译问题,请参考章节4)。

    2)拷贝SDK资源
    A)将SDK/res文件夹中的内容拷贝至游戏工程目录中。
    B)将SDK/assets文件夹中的所有文件拷贝至游戏相同的工程目录中,不能删除其中的任何文件, 否则导致非正常运行。

    3)添加SDK提供的Activity引用
    将SDK\AndroidManifest.xml.activity.txt中的文本Copy到游戏的AndroidManifest.xml中。注意:不要重复添加Launcher入口,否则会在手机桌面上显示多个游戏图标。
    Activity的横竖屏配置(android:screenOrientation),最好设置成游戏主界面的横竖屏设置。
    (提示:这里要把另一个launcher删掉;把下面这个删掉。)

<intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
5)添加SDK需要的use-permision(提示:没有第4点,是的,开发文档就是这么滴靠谱)
将SDK\AndroidManifest.xml.permision.txt中的文本Copy到游戏的AndroidManifest.xml
注意:不要重复添加use-permision项。

6)为游戏主入口添加中国移动游戏基地标识(Intent-Filter)(提示:第3步已添加,不用再改)
为游戏主入口Activity添加中国移动“和”游戏标识,如下:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.CHINAMOBILE_OMS_GAME" />
<category android:name="android.intent.category.CHINAMOBILE_GAMES" />
</intent-filter>
注意:如果游戏的主入口Activity没有添加移动游戏标识,则测试会不通过。


**文档第3节:3.详细接口**

3.1应用程序加载接口
游戏开发者在集成SDK,务必先自定义全局Application。Application里面代码必须包含,下行代码(注意:该接口必须放在Application中进行加载,不可放在Activity的onCreate中):

System.loadLibrary("megjb");

示例代码如下:(注意:该类的package路径应用必须与AndroidManifest.xml中的一致,如下代码示例中,黄色标注,否则游戏无法正常启动)。

(提示:上面提到路径一致的问题,我的程序包名是com.packagesdk.gsky,但是在src文件夹下并没有这个包,所以新建这个包,然后在这包下新建CmgameApplication.java文件,加入以下内容:)

    package com.packagesdk.gsky;(提示:这里是你的包名) 
    import android.app.Application;
    public class CmgameApplication extends Application {
      public void onCreate() {
    System.loadLibrary("megjb");
      }
    }

AndroidManifest.xml中配置:(提示,我只要增加android:name=”.CmgameApplication”)

    <application android:icon="@drawable/icon" 
        android:label="@string/app_name" android:name=".CmgameApplication">

3.2游戏启动接口
3.2.1 游戏启动画面配置
按照中国移动合作方游戏接入规范,需要在游戏的首个启动页面展现移动游戏相关LOGO,此规范要求SDK已经自带完成,游戏开发者只需要按照特定集成方式使用即可。

具体使用方法:
在AndroidManifest.xml中的主入口Activity配置为GameOpenActivity(即SDK提供的游戏启动画面的Activity)(提示:第3步已配置)。
游戏原来的主入口Activity请添加到res/values/g_strings.xml中的g_class_name字符串中,使得启动画面完成后即启动游戏。
例如:your.game.ui.Entry
(提示:我的改为org.cocos2dx.cpp.AppActivity

  • 3.文档中没有说到的可能错误

至此,游戏应该是可以启动后显示移动页面后转到helloworld界面的啦
eclipse->run 此时发现,assets文件夹下加进来的文件都丢了,libs\armeabi下的libmegjb.so文件也丢了,程序启动不起来,提示如下
这里写图片描述

网上找了半天也不见一个靠谱答案,最后发现assets文件夹下文件丢失的原因是build_native.py下有这么一个函数

def copy_resources(app_android_root):

    # remove app_android_root/assets if it exists
    assets_dir = os.path.join(app_android_root, "assets")
    if os.path.isdir(assets_dir):
        shutil.rmtree(assets_dir)

    # copy resources
    os.mkdir(assets_dir)
    resources_dir = os.path.join(app_android_root, "../Resources")
    if os.path.isdir(resources_dir):
        copy_files(resources_dir, assets_dir)

原来每次build后都会把这个文件夹用Resources替换一遍,我尝试了把sdk下的assets文件同时拷贝到Resources下和proj.android的assets文件夹下,但是编译后我发现proj.android下的文件夹都被删除了,个中原因我也不明。所以,我把build_native.py文件中的这两句注释掉了。
生成一个APK我分两步
1.不注释下面两行,在eclipse或命令行运行build_native.py.(运行后会编译生成\libs\armeabi\libcocos2dcpp.so文件,你的程序做过修改就要重新build这个文件)。
2.注释下面两行,在eclipse下运行run as android application或命令行compile生成apk文件。
(运行第一步后会把assets下的文件和libmegjb.so重新复制到相应目录下再继续第2步)。

 #   if os.path.isdir(assets_dir):
 #       shutil.rmtree(assets_dir)

再次编译运行,OK了,跳出了移动的界面,点击 “进入游戏 ”后进入到 helloworld界面,至于为什么改好了assets的删除问题后libs\armeabi下的libmegjb.so文件也不删除了,这个原因我也不明。

本想把proj.android文件夹打包放到网上去,但是好像不妥,我只是在新建的工程下接入SDK而已,没有做其它工作,但是运行的时候,eclipse的logcat时打印出了
network [“XXXX”] is connected的消息
XXXX与公司有关联,可能这个sdk是移动加入了公司的标识再发过来的
所以只发个开发文档了
http://download.csdn.net/detail/xiechyun/8538715

还要做游戏退出和音效开关,计费点等的功能,但前面两篇说了c++与java相互调用的方法,估计可以实现了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值