给《30岁》接心动Tap SDK

一直以来对于接入sdk都没有太多的实感,这次刚好有机会,给明星制作人的游戏帮忙接一下!

一个是心动在 github 上放的防沉迷的插件另外一个是 TapTap 平台的付费 sdk

三十岁的项目为了能够适配全面屏手机,以及众多的刘海屏幕,使用将 Unity 工程导出,在 Android Studio 中进行打包的方式完成。导出后的工程中包含了许多 java 代码,使用 gradle 方式管理工程。

所以在接 sdk 的过程中,遇到了一点点问题。

首先是配置 gradle 的问题,需要将 build.gradle 中的 gradle 的版本以及目标 Android sdk 版本全部配对。

Android SDK 可以在 Tools 中的 SDK Manager 中的 Android SDK 中看到版本。

新建项目,在 File - Project Structure 中可以看到 Gradle 的版本(Android Gradle Plugin Version)。

Gradle 参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
buildscript {
repositories {
...
}

dependencies {
classpath 'com.android.tools.build:gradle:3.3.1' // 这里是 gradle 版本
}
}

android {
compileSdkVersion 28
buildToolsVersion '28.0'

defaultConfig {
minSdkVersion 16
targetSdkVersion 28 // 这里是目标配置版本
applicationId 'com.wushigames.ifthirty'
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
versionCode 5
versionName '0.5'
}
}

最后接入这两个 sdk 后,很想记录一下经验教训:就是在接入 sdk 之前,首先要用空工程跑一下,看看打包出来的工程是否能正常工作,并且可以了解正常工作的 sdk 的表现。

遇到的问题,首先是重复导入的问题,在多个第三方插件中很可能会同时导入相同的模块(但不同名),因此需要在每一个 sdk 接入时做好确认。

导致问题:Program type already present: android.support.v4

另外,unity 中有官方的修改 gradle 的方法,在三十岁的工程中,使用了自动复制到导出工程中的方法,这样做的劣势是不能使用 Unity 自动将 .jar .aar 包写入 build.gradle 的便利,需要自己手动添加。

.jar 包可以在导出工程中直接访问(引用),.aar 的包需要在 build.gradle 中进行导出包。

1
2
3
4
5
6
7
8
9
apply plugin: 'com.android.application'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation(name: 'GASDK-Android-1.2.3', ext:'aar')
implementation(name: 'GASDK-Plugin-U3d-1.2.3', ext:'aar')
implementation(name: 'TapTap_license_v2.4', ext:'aar')
implementation project(':unity-android-resources')
}

在需要在 android 工程中使用资源的情况,会导出另外一个工程,同样的,如果是复制导出,需要添加依赖,否则则不能找到资源(因为没有成功打包啊)。