《快速集成指南》

客户端技术 Java 接口文档,详细说明接入 AnySDK 所需要的资料和开发。通过本文的介绍可以了解客户端接入的整个流程。在接入之前请认真阅读本文档,以减少接入过程中遇到的问题。

获取接入所需资源

AnySDK 接入需要获取资源包括:AnySDK_Framework(Java)开发包、AnySDK 相关参数。
请在请在 AnySDK 客户端的 安妮市场 里,选择 Java(Android) 框架进行下载。
注:获取 AnySDK 相关参数,需要打开 AnySDK 客户端,在 游戏管理 界面获取 AnySDK 的 AppKeyAppSecretPrivateKey

接入流程

AnySDK_Framework(Java)开发包

目录结构如下:
目录结构
资源包括 libs 目录下的 SDK 主架包 libPluginProtocolForJava_fat.jar、框架 so 文件(armeabi、armeabi-v7a、arm64-v8a、x86,把游戏不支持的架构目录删除)、res 目录下的各类资源。在工程开发前首先将工程库导入游戏工程中。注:游戏工程 API 最小支持 10。
Java 导入工程

配置 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" />

客户端接入代码

一、在主 Activity 的 onCreate 方法中对 AnySDK 进行初始化。

String appKey = "AEE563E8-C007-DC32-5535-0518D941D6C2";
String appSecret = "b9fada2f86e3f73948f52d9673366610";
String privateKey = "0EE38DB7E37D13EBC50E329483167860";
String oauthLoginServer = "http://oauth.anysdk.com/api/OauthLoginDemo/Login.php";
AnySDK.getInstance().init(this, appKey, appSecret, privateKey, oauthLoginServer);

注:

  1. appKey、appSecret、privateKey 这三个参数是在 AnySDK 客户端创建游戏之后生成的游戏唯一参数,可以在 AnySDK 客户端 游戏管理 界面查看到。
  2. 而 oauthLoginServer 参数是游戏服务提供的用来做登陆验证转发的接口地址,在此处配置的接口地址仅用于 SIM SDK 测试模式下(即直接运行母包时)做登录时框架请求的地址,而在正式打出渠道包的时候会被替换成相应渠道在打包工具中配置的地址参数。

二、重写 Activity 生命周期相关方法,代码如下:

import android.content.Intent;
import android.os.Bundle;
import android.content.res.Configuration;

import com.anysdk.framework.PluginWrapper;
@Override
protected void onDestroy() {
    PluginWrapper.onDestroy();
    super.onDestroy();
}

@Override
protected void onPause() {
    PluginWrapper.onPause();
    super.onPause();
}

@Override
protected void onResume() {
    PluginWrapper.onResume();
    super.onResume();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    PluginWrapper.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
protected void onNewIntent(Intent intent) {
    PluginWrapper.onNewIntent(intent);
    super.onNewIntent(intent);
}

@Override
protected void onStop() {
    PluginWrapper.onStop();
    super.onStop();
}

@Override
protected void onRestart() {
    PluginWrapper.onRestart();
    super.onRestart();
}

@Override
public void onBackPressed() {
    PluginWrapper.onBackPressed();
    super.onBackPressed();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    PluginWrapper.onConfigurationChanged(newConfig);
    super.onConfigurationChanged(newConfig);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    PluginWrapper.onRestoreInstanceState(savedInstanceState);
    super.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    PluginWrapper.onSaveInstanceState(outState);
    super.onSaveInstanceState(outState);
}

@Override
protected void onStart() {
    PluginWrapper.onStart();
    super.onStart();
}

三、框架资源释放,需要开发者在 onDestroy() 方法释放 AnySDK 资源。

@Override
protected void onDestroy() {
  AnySDK.getInstance().release();
  PluginWrapper.onDestroy();
  super.onDestroy();
}

四、代码混淆,如果要混淆 Java 代码,请不要混淆联编的 jar 包中的类。可以添加以下类到 proguard 配置,排除在混淆之外:

-keep class com.anysdk.framework.** {*;}
-keep class com.anysdk.Util.SdkHttpListener {*;}

【评论区】