常见问题
Unity
Combo SDK 的 Setup 时机
自初始化,通过使用 Unity 的生命周期 RuntimeInitializeLoadType.AfterSceneLoad
Combo SDK 对 Unity Android Templates 的要求
如果项目有修改 Android Manifest 文件 <application>
节点的内容,需要在 LauncherManifest.xml
模版文件里修改。
LauncherManifest.xml
AndroidManifest.xml
只保留 <application>
节点就可以,不需要 填充属性
Android
游戏自定义 Android 的 Application
ComboSDKApplication.java
通过 CLI 生成。
如果游戏需要自定义 Application,则需要继承 ComboSDKApplication
在项目导出的后处理过程中 Combo SDK 进行了哪些操作
为实现 Combo SDK 相关依赖和配置的引入,对生成的 Android 工程进行了以下处理:
相关文件 | 操作描述 |
---|---|
相关模板:Main Manifest 目标文件: /launcher/src/main/AndroidManifest.xml | · 设置 activity 为 com.seayoo.sdk.ComboSDKMainActivity (当用户通过模板指定 activity 则跳过)· 设置 launchMode 为 singleTop · 当该文件中存在对 application 标签的 android::name 定义时,将自动移除该定义· 当该文件中存在对 application 标签的 android::icon 定义时,将自动移除该定义 |
相关模板:Launcher Manifest 目标文件: /unityLibrary/src/main/AndroidManifest.xml | · 设置 application 标签的 android::name 为 "com.seayoo.sdk.api.ComboSDKApplication" · 设置 application 标签的 android:icon 为 @mipmap/combosdk_ic_launcher · 设置 application 标签的 android:allowBackup 为 false · 追加 application 标签的 tools:replace 内容:android:allowBackup;android:icon |
相关模板:Launcher Gradle Template 目标文件: /launcher/build.gradle | · 引入 ComboSDK.gradle · 引入 ComboSDKSigning.gradle · 设置 buildToolsVersion 为 30.0.2 ,参考 SDK Build Tools 版本说明 |
相关模板:Main Gradle Template 目标文件: /unityLibrary/build.gradle | · 引入 ComboSDKDeps.gradle · 设置 buildToolsVersion 为 30.0.2 |
相关模板:Base Gradle Template 目标文件: /build.gradle | · 引入 ComboSDKRepo.gradle · 设置 com.android.tools.build:gradle 为 4.2.2 ,参考 Android Gradle 插件版本说明 |
相关模板:Gradle Properties Template 目标文件: /gradle.properties | · 设置 android.useAndroidX=true · 设置 android.enableJetifier=true |
导出 Android 项目时,Unity 提示错误:Defining xxx in UnityLibraryManifest is not allowed
根据 Unity Android App Manifest 规范,请确保在你自定义的 Unity Launcher Manifest 模板 中仅指定 Activity 相关的属性。另外,在你的自定义 Unity Library Manifest 模板 中,只应该设置 Application 相关的属性。
执行 Combo SDK Android Post Build 过程时,会检查 Library Manifest 中是否设置了 Application 的 android::name
和 android::icon
属性。如果这些属性存在,将会触发此错误消息,并自动移除这些属性设置。
在自定义 Launcher Manifest 模板中,能否设置 application
的 android::allowBackup
属性为 true
受到 Combo SDK 依赖的第三方库限制,应删除 android::allowBackup
定义,或将其设置为 false
,否则将会在编译项目时发生 Manifest Merge 冲突。
unityLibrary AndroidManifest.xml
中,为什么启动项变成了 com.seayoo.sdk.api.EulaActivity
根据Android各大应用市场隐私合规指引要求,在调用系统各类权限、设备信息之前,必须进行想用户披露协议内容并由用户同意才能继续,所以将EulaActivity
设置为启动项,在Unity启动之前处理隐私指引相关流程
执行 combo android build --distros ...
报错 Execution failed for task ':launcher:checkReleaseAarMetadata'.
怎么办
Combo SDK 使用 compileSdkVersion >= 33,Android SDK 下载地址, 下载到本地后 , 在Unity Preferences
-> External Tools
-> Android SDK Tools
设置即可。
弹出 Combo SDK 界面时游戏画面会暂停
Android 进程触发 onPause
生命周期事件时(例如弹出登录界面),默认 Unity 会停止渲染。属于正常现象。
游戏登录场景中使用了视频组件 Video Player
,请在 Wizard 面板中勾选 Enable Keep Rendering on Pause
选项。
构建 APK 时,报 Duplicate class xxx found in modules xxx(guava-xx-android.jar) and jetified-guava-31.1-android(guava-31.1-android.jar)
异常
检查游戏中是否使用 AVPro Video 插件或其他含有 guava 库的插件。
游戏中如果使用含有 guava 库的插件,会与 Combo SDK 中的 guava 库产生重复引用。
游戏侧将插件中的 guava 相关的 jar
或 arr
包删除即可。
iOS
Combo 对导出的 Xcode 工程作了哪些自动化处理。
通过 Unity 构建后处理机制 - PostprocessBuild 对导出的 Xcode 工程作了如下配置(游戏可根据需要在导出的 Xcode 工程中对以下配置作二次修改):
- Runpath Search Paths 配置
嵌入 Swift 标准库
此配置是为防止当 iOS Deployment Target < 12.2 时,启动时崩溃。
- 关闭 BitCode
- 链接配置
SDK 崩溃原因排查。
请检查
Unity-iPhone
Target 中是否将所引用的动态库Embed & Sign
。若项目集成了
ComboSDKTopOn
或ComboSDKTrackingIO
,请检查Info.plist
中是否配置NSUserTrackingUsageDescription
追踪权限请求键。若 iOS Deployment Target < 12.2 ,请检查是否嵌入
Swift
标准库
IOS PostBuild 做了哪些处理。
装配 ComboSDK.json 文件
集成 XCFrameworks 组件
在 Target Unity-iPhone 和 UnityFramework 中集成所需组件。
在 Target Unity-iPhone 中,嵌入所需组件对应的动态库(把选项Do Not Embed
改为Embed & Sign
).
编译报错:framework 'KSAdSDK' not found
使用 Wizard 面板中 iOS PostBuild 功能,可避免手动配置
将KSAdSDK.framework
所在目录配置至Unity-iPhone
与 UnityFramework
Target Framework Search Paths
中,例如$(PROJECT_DIR)/ComboSDKFrameworks
。
Windows
项目报错:Packages\com.seayoo.sdk\Combo\Plugins\Windows\ComboSDK\Runtime\Combo\UI\View\WebView.cs(6,7): error xxxx
Combo SDK for Windows 依赖 WebView 插件,请联系世游技术团队获取 WebView 插件,并导入至工程中。