anySdk的常规接入流程
首先 anySDK 在这里了解 基本信息 http://docs.anysdk.com/SDKParams
这里主要讲的是接入anysdk 的流程
1.官网下载anySDK http://docs.anysdk.com/Home
2 .
为了集成AnySDK Framework,您首先需要到AnySDK官方网站注册登陆,然后到AnySDK Framework的下载页面( http://www.anysdk.com/downloads ) 下载完整的anysdk框架包,解压以后可以看到如下图的目录结构:
下载得到的AnySDK Framework框架资源目录内各部分介绍如下图所示:
在android工程目录下面新建protocols目录,然后将上一步选择的对应版本框架目录下的include文件夹和android文件夹拷贝到protocols下面
.将框架目录下的res文件夹中的所有资源文件拷贝到工程项目android对应的文件中。
3.配置环境
在工程目录下jni/application.mk
找到 APP_STL := c++_static 替换为
APP_STL := gnustl_static #c++_static
修改Android.mk文件配置framework编译选项
- 这一步是修改游戏工程中C++代码的ndk编译配置文件Android.mk,将AnySDK提供的framework库链接到游戏工程的库中。
- 1.将protocols目录添加到NDK_MODULE_PATH环境变量中:在android.mk第一行 LOCAL_PATH := $(call my-dir) 下面新加一行代码
LOCAL_PATH := $(call my-dir)$(call import-add-path,$(LOCAL_PATH)/../)
- 2. 添加AnySDK framework静态库声明:在android.mk文件的LOCAL_C_INCLUDES声明下面添加一行代码
LOCAL_WHOLE_STATIC_LIBRARIES := PluginProtocolStatic
-
- 注:此处注意语法规则,如果工程原有mk文件中没有其他LOCAL_WHOLE_STATIC_LIBRARIES声明,则添加上面的代码即可,如果mk文件中原来就有其他的LOCAL_WHOLE_STATIC_LIBRARIES声明,那么就需要加在原有声明之后,并且将 :=修改为+=
- 3. 添加库路径声明代码:在android.mk文件的最后一行添加以下代码
$(call import-module,protocols/android)4 配置 protocols 下的 include文件夹和android文件夹路径找到 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \ 后追加$(LOCAL_PATH)/../../protocols/android\$(LOCAL_PATH)/../../protocols/include\
导入框架自带的jar包并勾选export选项
- 步骤如下: 右键点击您的工程,选择 Properties 后选择Java Build Path,在面板上点击 Libraries,通过Add JARs... 将libPluginProtocol.jar引进游戏工程,如图
注:游戏工程API最小支持10
配置AndroidManifest.xml添加框架需要的权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
一般来说,即便不集成AnySDK Framework,大部分的项目也都会注册申请这些权限。
初始化AnySDK Framework
初始化JavaVM
- 首先,要在游戏工程加载jni的时候为AnySDK framework设置JavaVM引用。先找到JNI_OnLoad函数,此函数是jni被加载时会首先被调用的函数。
- 以cocos2d-x 3.0版本引擎为例,JNI_OnLoad函数定义在platform/android目录下的javaactivity.cpp中,如下图所示:
- 1.导入头文件并声明命名空间
#include "PluginJniHelper.h" using namespace anysdk::framework ;
注:此处导入头文件时要根据项目设定的头文件定义路径来写,以保证编译时能成功找到相应头文件
- 2.添加设置javaVM代码
PluginJniHelper::setJavaVM(vm); // add for plugin
-
- 若此处已有其他引擎初始化JavaVM的代码,保留其代码并在后面添加PluginJniHelper::setJavaVM(vm);即可
在JAVA层初始化AnySDK Framework框架
- 1.首先找到游戏工程的主Activity,以cocos2d-x引擎游戏为例,主Activity即是继承了cocos2dxActivity的Activity。
- 2.然后在主Activity的onCreate()方法中新增如下代码来初始化AnySDK Framework:
import com.anysdk.framework.PluginWrapper;public class MainActivity extends Activity{protected void onCreate(Bundle savedState){super.onCreate(savedState);PluginWrapper.init(this); // for plugins}
- 3.重写Activity生命周期相关方法,代码如下:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data){super.onActivityResult(requestCode, resultCode, data);PluginWrapper.onActivityResult(requestCode, resultCode, data); } @Override protected void onResume() {super.onResume();PluginWrapper.onResume(); } @Override public void onPause(){PluginWrapper.onPause();super.onPause(); } @Override protected void onNewIntent(Intent intent) {PluginWrapper.onNewIntent(intent);super.onNewIntent(intent); }
注:在cocos2d-x 3.0之后的版本中集成cocos2dxActivity之后已经不需要手动实现activity里的生命周期方法,因此如果开发者发现主Activity没有这些方法,就需要自己去重写这个方法(直接拷贝上面的代码片段也可以)
在C++层初始化AnySDK Framework框架
- 在C++层调用任何AnySDK Framework函数之前都需要调用init函数进行框架初始化,推荐在java层初始化完成之后通知c++层初始化框架,代码如下:
std::string appKey = "BC26F841-OOOO-OOOO-OOOO-OOOOOOOOOOOO"; std::string appSecret = "1dff378a8f254ecOOOOOOOOOOOOO"; std::string privateKey = "696064B29E9A0OOOOOOOOOOOOO"; std::string oauthLoginServer = "http://oauth.anysdk.com/api/OauthLoginDemo/Login.php";AgentManager::getInstance()->init(appKey,appSecret,privateKey,oauthLoginServer);
- 注:appKey、appSecret、privateKey这三个参数是在打包工具客户端创建游戏之后生成的游戏唯一参数,可以在打包工具游戏管理界面查看到,如下图:
而oauthLoginServer参数是游戏服务提供的用来做登陆验证转发的接口地址,在此处配置的接口地址仅用于sim sdk测试模式下(即直接运行母包时)做登录时框架请求的地址,而在正式打出渠道包的时候会被替换成相应渠道在打包工具中配置的地址参数。
加载及卸载SDK插件
- 1.在初始化框架完成之后加载所有集成的sdk,代码如下:
AgentManager::getInstance()->loadALLPlugin();//对插件进行初始化,包括对各个sdk的初始化
注:由于部分sdk在初始化时涉及到sdk闪屏的操作强烈建议在完成AnySDK Framework框架初始化后调用加载插件操作,例如
import com.anysdk.framework.PluginWrapper;public class MainActivity extends Activity{protected void onCreate(Bundle savedState){super.onCreate(savedState);PluginWrapper.init(this); // for pluginsnativeInitPlugins();//通过jni调⽤用初始化函数 } // 通过jni java 调c++ 对插件进行初始化 //c++ 层响应 nativeInitPlugins()方法 extern "C" {JNIEXPORT void JNICALL Java_org_cocos2dx_cpp_nativeInitPlugins(JNIEnv* env, jobject thiz){
当游戏不需要插件时,可进⾏行卸载:
AgentManager::getInstance()->unloadALLPlugin();//对插件进行卸载,需要卸载时可调用
} }2.卸载插件
AgentManager::getInstance()->loadALLPlugin();
anySdk的常规接入流程相关推荐
- 以美颜sdk为例,详解sdk接入流程
Sdk,是可用于开发面向特定平台的软件应用程序的工具包.举个例子,如果你想组装一个模型车或飞机.在构建这个模型时,需要一整套物品去组装.sdk相当于组装它们所需的工具,包括装配说明等.在这信息化时代, ...
- Amazon App Tester工具的安装和配置Amazon内购接入流程以及测试
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u013007305/article/d ...
- NR 5G UE初始接入流程
5G UE初始接入流程 流程图 流程说明 1. UE向gNB-DU发送RRC连接请求消息. 2. gNB-DU包括RRC消息,并且如果UE被允许,则在F1AP INITIAL UL RRC MESSA ...
- 顺丰快递商家寄件发货接口API类型和接入流程方案【快递100接口Demo】
顺丰快递对于商家和个人的隐私保护较为严格,对于操作频次高的用户会进行多次验证码确认信息和服务安全.如果需要大量地邮寄顺丰快递以及查询顺丰的快递物流轨迹信息,必须对接顺丰官方的寄件和查询API接口.企业 ...
- APP、网站等注册、登录、改密等发送验证码短信的接入流程---创蓝253云通讯
1.登录 https://zz.253.com/site/login.html 2.获取接口API账号,密码:选择任意产品>激活>企业认证(上传公司营业执照) 3.申请签名(以公司简称或缩 ...
- ESP8266天猫精灵接入流程
Blinker天猫精灵接入流程 设备上线 设置接入的设备类型 设置接入设备的auth Key 设置SSID/PSWD 或者选择 ESPTOUCH等配网方式 下载代码等待设备接入上线成功 authKey ...
- v5行为验证使用介绍(三)- 程序接入流程
目录 v5行为验证使用介绍(一)- 试探攻击的威胁 v5行为验证使用介绍(二)- 应用管理 v5行为验证使用介绍(三)- 程序接入流程 v5行为验证使用介绍(四)- Verify5Client.jav ...
- 五分钟了解机智云自助接入流程
机智云平台是致力于物联网.智能硬件云服务的开放平台.机智云专注于提供智能云服务及物联网的软硬件一体化解决方案,帮助传统硬件厂商产品升级,快速实现硬件智能化. 要实现硬件的智能化,除了硬件本身外,还需要 ...
- 深入理解CDC原理与Debezium数据接入流程和原理
深入理解CDC原理与Debezium数据接入流程和原理 一.什么是WAL 二.什么是CDC 三.理解CDC客户端 四.Debezium数据接入原理 1.postgresql数据库对CDC的支持 2.p ...
- YS动态口令系统接入流程
动态口令是保护用户账户的一种常见有效手段,即用户进行敏感操作(比如登录)时,需要用户提供此动态生成的口令做二次身份验证,假设用户的口令被盗,如果没有动态口令,也无法进行登录或进行敏感操作,保护了用户的 ...
最新文章
- 七天学会「股票数据分析软件」的开发(下)
- 实例代码分享Python实现Linux监控
- VTK:actors的类型用法实战
- mysql锁的基本类型_Mysql的锁
- 风行网否认收购暴风TV 称双方纯属业务合作
- c++中sin,cos,arcsin等和在C/C++中使用pi (π) 值
- mat分析dump分析_使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一)
- 百度图表echart使用心得
- Nessus下载失败问题解决
- 邮箱不能发送大附件,什么邮箱可以发送超大附件?
- 关于侵权Sinesafe官方网站,仿冒、抄袭等恶劣行为的公告
- 美团跑腿地址选择器流程图[小程序]
- ERTEC200P-2 PROFINET设备完全开发手册(目录)
- JAVA日记之SpringAOP_XML配置与注解开发 ----喝最烈的酒.
- 【机器学习】Unsupervised feature selection by regularized self-representation(RSR)
- 怎么给图片加上红圈,红框,红箭头标重点等?还有添加文字
- 网络抓包工具Charles的介绍与使用
- R语言 线性模型 逐步回归
- SQL查询结果只取一条
- 检测网站打开速度的5个方法