Android 手游聚合SDK小知识(一)

这篇具有很好参考价值的文章主要介绍了Android 手游聚合SDK小知识(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android 手游聚合SDK小知识(一)
Android 手游聚合SDK小知识(二) 聚合分包

前言

回头想想,在安卓游戏SDK这个领域,我也呆了4年了,从啥都不懂的小菜鸟,逐渐靠自己不断学习,对这个行业也算有了一些理解,趁着最近有空,我想了一下,还是把最近这几年对游戏SDK聚合的一些理解分享出来给大家,希望能和大家一起进步。PS:目前我做的聚合SDK只能适用于国内,海外谷歌包用的是aab,并且海外渠道sdk资源引用时经常不使用反射,所以海外SDK目前我还没想出来如何聚合,希望有朋友能解决这个问题分享给我。

1、渠道SDK

一个游戏需要庞大的用户量,毕竟玩的人越多,越多人充值,老板就赚得越多,你的工资奖金才能越多嘛,这时候就需要接入一些第三方渠道,让他们帮你进行有偿推广,这些第三方渠道拥有大量用户,可以帮你进行迅速的起量,让大家都去玩你的游戏。

1.1、联运渠道SDK

我们可以接入一些联运SDK渠道,使用他们的渠道来帮我们推广游戏,百度、360、应用宝,Huawei、OPPO 等,包含了最核心的登陆、支付等体系。如果接入了这些渠道,就可以使用他们的SDK服务(登陆、支付等)。
当然了,使用这些联运渠道,一般情况下都是要与对方分成的,充值的时候吊起来的是对方的充值界面,先充到对方的账户上,再进行分成,一般来说分成比例从37开到19开不等。

1.2、自有SDK渠道

如同上面说的,联运SDK需要与渠道方分成,而且分成比例极高,这个时候如果老板自己有稳定的推广渠道,就可以使用自有的SDK,说白了,自有SDK和联运渠道SDK本质上没什么区别,也拥有登录、支付等一系列体系,只不过它属于发行公司内的的SDK,使用自有的SDK就可以100%收入归自己了,但是相应的,推广的成本也要自己掏,这里就不赘述了。
内部SDK可以封装在聚合SDK中,也可以单独写成一个moudle,我这里是单独写成了一个moudle,用的时候打包成aar,和聚合sdk一起给cp接入,cp接入后就可以吊起我们自有的SDK,完成登录支付等一系列操作,后续我再将包用脚本进行渠道分包。

2、游戏研发(CP)

游戏研发也就是专门开发游戏的公司,一般称为CP。

3、聚合SDK

在游戏行业中,聚合SDK可以理解为一个中间层,一个桥梁,作用是沟通游戏CP和渠道SDK。
聚合SDK = 聚合层接口 + 渠道SDK(或者是自有SDK)
使用聚合SDK,聚合层接口不变,变得是渠道SDK,可以在游戏接入一次聚合SDK后,用脚本自动反编译回编译,替换掉渠道SDK代码,实现一包多渠道,减少CP方的工作量。

图中是游戏未接入聚合SDK的情况下,调用登录逻辑。
Android 手游聚合SDK小知识(一),java,游戏,android,android,游戏,java,聚合分包,游戏聚合sdk分包

  1. 游戏客户端调用SDK客户端的登录API进行登录,SDK客户端会拉起登录界面
  2. SDK客户端在登录界面输入账密或调用第三方登录
  3. SDK服务端校验登录信息成功,返回userID和token给SDK客户端
  4. SDK客户端通过回调将userID和token返回给游戏客户端
  5. 游戏客户端获取到token和userID后,将其传给游戏服务器端
  6. 游戏服务器将数据传给SDK服务器进行校验
  7. 校验通过,游戏服务器将用户的账户信息返回给游戏客户端
  8. 游戏客户端登录成功

上面的步骤解释了游戏和渠道SDK的交互逻辑,理论上CP是可以直接接入SDK渠道的,但是,目前有一个问题,那就是如果有多个SDK渠道怎么办,目前国内大大小小的渠道有上百个,如果要将这上百个渠道挨个接入,这里面的工作量想必巨大无比,需要占用游戏研发非常多的工作时间,那么有没有这么一种方法,游戏研发接入一遍就可以实现完成多个sdk渠道的上架呢,这时候,聚合SDK就应运而生了。
聚合SDK只有一个,游戏研发只用接入一个聚合SDK,然后剩下都交给聚合方,由聚合方进行分包上架。
下图是加入聚合SDK后的登录逻辑:
Android 手游聚合SDK小知识(一),java,游戏,android,android,游戏,java,聚合分包,游戏聚合sdk分包

4、聚合SDK对外接口及注意事项

1、初始化
Application 的初始化,让CP使用或继承我们的Application,我们再继承渠道方的Application。
Activity中的init方法。
2、登录
统一登录接口,接收渠道方的登录回调参数,再将登录回调参数去聚合服务器校验,通过校验后,聚合服务器返回token和userID,聚合SDK再将参数传给游戏客户端,由游戏客户端和服务器完成登录校验。

    /**
     * 登录方法
     * @param activity  上下文环境
     */
    public void login(Activity activity){
        Log.v(TAG,"进入登录");
    }

3、支付
4、注销(切换账号)
5、生命周期

   /**
     * onCreate生命周期方法
     * @param activity
     */
    public void onCreate(Activity activity, Bundle savedInstanceState){
        Log.v(TAG,"进入onCreate");
        Log.v(TAG,"onCreate执行完成");
    }



    /**
     * onResume生命周期方法
     * @param activity    之前的塔防版署包这里是context
     */
    public void onResume(Activity activity){
        Log.v(TAG,"进入onResume");
        Log.v(TAG,"onResume执行完成");
    }

    /**
     * onPause生命周期方法
     * @param activity   之前的塔防版署包这里是context
     */
    public void onPause(Activity activity){
        Log.v(TAG,"进入onPause");
        Log.v(TAG,"onPause执行完成");
    }

    /**
     * onDestroy生命周期方法
     * @param context
     */
    public void onDestroy(Context context){
        Log.v(TAG,"进入onDestroy");
        Log.v(TAG,"onDestroy执行完成");
    }

    /**
     * onRestart生命周期方法
     * @param context
     */
    public void onRestart(Context context){
        Log.v(TAG,"进入onRestart");
        Log.v(TAG,"onRestart执行完成");
    }

    /**
     * onStart生命周期方法
     * @param context
     */
    public void onStart(Context context){
        Log.v(TAG,"进入onStart");
        Log.v(TAG,"onStart执行完成");
    }


    /**
     * onStop生命周期方法
     * @param context
     */
    public void onStop(Context context){
        Log.v(TAG,"进入onStop");
        Log.v(TAG,"onStop执行完成");
    }

6、退出

    /**
     * 退出游戏弹窗
     */
    public void exitGame(Context context){
    
    }

7、数据上报

  1. 创建角色
  2. 角色升级
  3. 进入游戏
  4. 选择区服
    这些场景一般是接收游戏传递过来的数据上报到渠道或聚合sdk中,用于数据统计用
                Map map = new HashMap();
                map.put("uid", "123456");   //角色id
                map.put("server_id", "310");  //区服id
                map.put("server_name", "houruoyu333");  //区服名称
                map.put("role_id", "1225883");  //角色id
                map.put("role_name ", "houruoyu");  //角色名称
                map.put("role_level", "3");   //角色等级
                map.put("game_name", "");   //游戏名称
                map.put("role_type", "战士");  //角色职业
                map.put("vip_level", "13");   //vip等级
                map.put("game_money", "999");   //玩家拥有金币数量
                map.put("create_role_time", Long.valueOf(1616136064));  //创角时间
                map.put("level_up_role_time", Long.valueOf(1616136064));  //升级时间
                map.put("has_gold", "3000");     //补充字段

8、实名认证接口

5、聚合SDK规范

1、尽量少使用第三方开源库,避免和cp引入的依赖发生冲突
2、命名规范
聚合SDK中可能会使用string、color、布局文件等资源,如果和cp或渠道sdk发生重名会很麻烦,会导致合并资源的时候发生冲突。所以一般来说,资源等命名,都需要加上自己独特的前缀,避免冲突,例如:

<string name="houruoyu_app_online">登录</string>

如果不加上 houruoyu_作为前缀的话,很容易冲突。
3、聚合SDK中使用资源索引(R.java),会导致合包的时候资源冲突,或者缺失资源等问题。
解决方法:所有涉及到R.java资源的引用,统一使用context.getResources().getIdentifier(“资源名”, “资源类型”, “包名”);
4、回调统一
建议在初始化处,统一做回调处理,例如:文章来源地址https://www.toymoban.com/news/detail-683621.html

    HouruoyuSDK.getInstance().init(this, new Callback(){
        @Override
        public void onInitSuccess() {
            //初始化成功
        }
        @Override
        public void onInitFailed() {
            //初始化失败
        }
        @Override
        public void onLoginSuccess(User user) {
            //登录成功
        }

        @Override
        public void onLoginFailed(String msg) {
            //登录失败
        }

        @Override
        public void onLoginCancel() {
            //登录取消
        }
         @Override
        public void exitGame() {
            //退出游戏
        }
    });

到了这里,关于Android 手游聚合SDK小知识(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android OTA差分包制作(RK平台)

    1. 编译两个新旧版本,需要用到两个版本的rk3566_r-target_files-eng.zip文件。 2. 将两个版本的rockdev/Image-rk3566_r/rk3566_r-target_files-eng.zip拷贝到某个制作空间下,建议文件命名带上型号及版本号,方便维护,如: rk3566_r-target_files-XXModel-V3.0.0.zip rk3566_r-target_files-XXModel-V3.0.1.zip 3. 在源码

    2023年04月27日
    浏览(64)
  • Mac系统配置java、Android_sdk、gradle、maven、ndk、flutter、tomcat环境变量

    搞了三天,终于搞定MAC系统下的各种环境变量了…… 旧版本10.13.6或者更老的MAC系统,只用在.bash_profile文件编辑就行了;新版本10.14.2、10.15.7或者更高的,还要去.zshrc文件加一句source ~/.bash_profile,才能使所有环境永久生效。 打开终端(相当于Windows系统的命令提示符),运行

    2024年02月05日
    浏览(49)
  • Android性能优化之修复游戏中内存泄漏(java层)

    游戏在bugly上内存OOM越来越严重,因此,近期对内存进行优化。从java层的内存进行优化开始,通过LeakCannary或者adb shell 获取到内存快照,发现好几处内存泄漏点。 1.单例类持有Activity : 查看内存快照,该闪屏页面Activity(包含引用对象)可回收3.8M的内存; LeakCannary的内存分析也

    2024年02月15日
    浏览(60)
  • Android开发Java版 —— 基础知识

    📝 “第一行代码” 第二版 (java)读书笔记 源码下载地址:github仓库地址。 Android大致可以分为 四层架构 : Linux 内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动 系统运行库层 这一层通过一些C/C++库来为Android系统提供了主要的特性支持

    2024年02月06日
    浏览(54)
  • Android 开发必备知识点及面试题汇总(Android+Java+算法+性能优化+四大组件……),腾讯安卓开发面试

    5.请介绍下 AsyncTask的内部实现,适用的场景是 AsyncTask 内部也是 Handler 机制来完成的,只不过 Android 提供了执行框架来提供线程池来 执行相应地任务,因为线程池的大小问题,所以 AsyncTask 只应该用来执行耗时时间较短的任务, 比如 HTTP 请求,大规模的下载和数据库的更改不

    2024年04月15日
    浏览(62)
  • 基于Linphone android sdk开发Android软话机

    LinPhone是一个遵循GPL协议的开源网络电话或者IP语音电话(VOIP)系统,其主要如下。使用linphone,开发者可以在互联网上随意的通信,包括语音、视频、即时文本消息。linphone使用SIP协议,是一个标准的开源网络电话系统,能将linphone与任何基于SIP的VoIP运营商连接起来,包括我

    2024年03月13日
    浏览(35)
  • Android Studio与 Android SDK的安装和配置

    Android Studio与 Android SDK的安装和配置 Android Studio是开发Android应用程序的官方集成开发环境(IDE),它提供了丰富的工具和功能,使开发者能够方便地创建、调试和部署Android应用。Android SDK(Software Development Kit)是一组开发Android应用所需的软件包集合,包含了Android平台的工具

    2024年02月08日
    浏览(46)
  • Android中的SDK以及利用Android Studio生成aar

    广义上的SDK: 指的是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合。 比如你在编辑器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是

    2024年02月12日
    浏览(44)
  • Android SDK安装

     可以利用Android Studio下载sdk,下边链接是安装Android Studio的,下载可以选择zip或exe;推荐zip格式,解压后就可以直接用了。 https://developer.android.google.cn/studio/  下载完成后,我就按照默认路径一直next,这里需要勾选内容。因为我反复下载删除好几次,这里可能只有一个选项为

    2024年02月12日
    浏览(38)
  • Android SDK安装过程

    APP自动化测试重点:app自动化的开始,则需要掌握Appnium测试工具: Android SDK 安装完成后,其目录结构如下所示: add-ons :该目录存放着一些附加的库,第三方公司为Android平台开发的附加功能系统比如 Google Maps,但安装时若未选择安装 Google API,则该目录为空。 build-tools :各

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包