跳到主要内容

初始化

统一应用名称、icon 的引用名

不同渠道对应用名称、icon 的引用名要求不同,所以由 OmniSDK 统一命名定义,需要项目的工程代码进行适配。

引用名功能处理方式
omni_app_name应用名字符串将游戏工程代码里原应用名的变量名重命名为 omni_app_name,同时更改工程内的引用名,或增加 omni_app_name 字符串引用名。
omni_ic_launcher启动 icon 图片名拷贝一张启动 icon,并命名为 omni_ic_launcher.png,放在 mipmap-xxhdpi 文件夹下

Application 必接

接入方式

为兼容部分渠道配置,统一添加 tools:replace 配置,项目按 IDE 提示增减:

<application 
android:name="{replace-your-package-path}.GameApplication"
tools:replace="android:theme,allowBackup">
...
</application>

OmniSDK 支持两种方式接入 Application,因部分聚合渠道有强制要求,建议直接使用第一种方法。

  • 方法一:若游戏 Application,或 继承android.app.Application ,或有接入部分特殊渠道,则将继承改为 OmniApplication,并增加环境的参数声明:
import com.kingsoft.shiyou.omnisdk.api.OmniApplication;

public class GameApplication extends OmniApplication {
@Override
public void attachBaseContext(Context base) {
super.attachBaseContext(base);
// 游戏发布环境的参数声明的初始化配置
InitParams initParams = new InitParams();
initParams.setDebug(false);
initParams.setEnvironment("Production");
OmniSDK.getInstance().initialize(initParams);
}
}
  • 方法二(不建议):若接入的渠道中无特殊渠道游戏的 Application 继承了其他 SDK 的 Application 子类,则在其中添加如下代码:
@Override
public void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(context); // 64k方法数
OmniSDK.getInstance().onApplicationAttachBaseContext(context)

// 游戏发布环境的参数声明的初始化配置
InitParams initParams = new InitParams();
initParams.setDebug(false);
initParams.setEnvironment("Production");
OmniSDK.getInstance().initialize(initParams);
}

@Override
public void onCreate() {
super.onCreate();
OmniSDK.getInstance().onApplicationCreate(this);
}

@Override
public void onLowMemory() {
super.onLowMemory();
OmniSDK.getInstance().onApplicationLowMemory();
}

@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
OmniSDK.getInstance().onApplicationTrimMemory();
}

@Override
public void onTerminate() {
super.onTerminate();
OmniSDK.getInstance().onApplicationTerminate();
}

特殊渠道列表

渠道名渠道唯一标识
魅拓meituo
海南澎湃互动pphd
多酷duoku
MuMuyofun
游戏狗gamedog
汇智huizhi
熊猫侠xmxia

GameActivity 必接

  • 🌟(推荐)方式一:将游戏主 Activity 继承改为 OmniSdk..Activity,对应关系如下。
public class GameActivity extends OmniSdkActivity {  // android.app.Activity
public class GameActivity extends OmniSdkNativeActivity { // android.app.NativeActivity
public class GameActivity extends OmniSdkAppCompatActivity { // androidx.appcompat.app.AppCompatActivity
...
}

public class GameActivity extends UnityPlayerActivity {}
public class UnityPlayerActivity extends OmniSdkActivity { // android.app.Activity
public class UnityPlayerActivity extends OmniSdkNativeActivity { // android.app.NativeActivity
public class UnityPlayerActivity extends OmniSdkAppCompatActivity { // androidx.appcompat.app.AppCompatActivity

  • 方式二:在游戏主 Activity 添加 OmniSDK 的生命周期方法, OmniSdkActivity 里所有的代码

检查 Activity 节点(必检)

  • 检查 AndroidManifest.xml 的 Activity 节点声明,如果引擎未自动生成,需要手动添加,否则初始化或功能会失败
  • 检查的标准结构如下:
<application
android:name=".package.GameApplication" // 本行重点
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.GameTheme"
tools:replace="android:theme">

<activity
android:name=".package.GameActivity" // 本行重点
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:exported="true"
android:screenOrientation="sensor"
android:theme="@style/Theme.GameActivity.Fullscreen">

<intent-filter>
<!-- 主Activity即启动Activity,需要至少声明这两个属性 -->
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

API 开发(按需)

以上编译集成、初始化等步骤都完成后,就可以按项目需要的功能进行开发了。

API 接口说明

  • OmniSDK 接口对线程的调用无要求,游戏调用接口时无需开启新线程
  • 回调时,无需额外切换线程
  • 如处理一些 UI 事件,则需要确保在主线程执行:
  1. 使用 runOnUiThread
runOnUiThread(new Runnable() {
@Override
public void run() {

}
});
  1. 使用 Handler
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {

}
});

功能逻辑处理说明

  • OmniSDK 秉持只接一次API接口的设计理念,在配合 shiyou 文件夹的多渠道配置后,可一次出多个渠道产物。
  • OmniSDK 会提供一些识别性API,比如获取当前渠道名等,方便游戏自定义特定渠道或功能的逻辑,从而游戏不需要为特定功能或渠道拉取特定代码分支,减少代码维护成本。

功能接口列表

账号

Android SDK 账号相关 API

支付

Android SDK 支付相关 API

社交

Android SDK 社交相关 API

常用功能

Android SDK 其他常用功能 API

部分渠道的特定方法

Android SDK 部分渠道的特定方法

数据统计

Android SDK 数据统计 API