unity穿山甲广告SDK接入记录
DuckTyping
编辑于 2023年09月26日 18:37
收录于文集
共2篇

前言

目标:接入穿山甲SDK,并在安卓平台打包测试

本以为接入会很简单,但是因为对安卓开发不熟悉,有些概念不太懂,查资料,查报错,搞了很久才打包出来.特记录于此.

软件版本

  • Unity2021.3.3.0f1

  • 穿山甲SDK 版本号:4.7.0.0

  • ExternalDependencyManager简称(EDM4U) 外部依赖管理器,版本1.2.177

  • 安卓SDK版本30.0.0

  • 安卓SDKBuildTools31.0.0

  • JDK版本1.8

  • Gradle版本和unity对应

开始接入

下载并导入穿山甲SDK

  1. 从穿山甲下载unity版本的SDK,解压后得到两个unitypackage文件.CSJAdapter这是广告插件,Example这是例子.

  2. 直接导入这两个包,这时候会有报错,原因是这个包里面带的EDM4U版本比较低,不适配unity2021,当然如果低版本的unity可能就不报关于EDM4U的错了,这个自行判断.

解决EDM4U报错

  1. 直接从此处下载新版本插件https://github.com/googlesamples/unity-jar-resolver

  1. 删除刚刚导入的穿山甲SDK自带的EDM4U也就是Assets下面的ExternalDependencyManager文件夹

  2. 导入上面下载的新版本的EDM4U

  3. 此时EDM4U会跳出一个弹窗,让你选择是否自动下载依赖包之类的选项,选择"enable",如果没有跳出也可以在这里设置.(我这个界面是下载过依赖的,Assets>ExternalDependencyManager后面的子菜单可能跟第一次打开的不太一样)

  1. 如果没有看到菜单中Assets>ExternalDependencyManager选项,则检查是否正确安装ExternalDependencyManager插件.

  2. 如果成功安装并且设置好,则会开始自动下载一些安卓依赖包,这里就会出现很多文件,这样就算把自动依赖这部分弄好了

开始打包

点击打包

开始报错!

这个报错信息就很神奇,完全看不懂?!

这个错误其实是安卓SDK版本和安卓SDKBuildTools版本对不上.

问:为什么对不上?

答:穿山甲SDK自己设置了这个版本.打开Assets>CSJ>Plugins>Android下面的CSJ.plugin文件,看到build.gradle配置了这些版本.然后你unity的playersetting里面设置的和这个不一样的话,就会出现各种兼容性问题.不是非常熟悉安卓开发的,最好还是设置成一样的版本.

这里我们自己设置一下安卓SDK版本30,安卓SDKBuildTools版本31

自己下载并指定SDKBuildTools,不用unity自己带的.我使用AndroidStudio下载了31版本的SDKBuildTools.

Ps:我电脑上有很多JDK版本,所以我这里也直接指定了JDK版本,JDK版本选择1.8即可,如果因为JDK的问题打包失败,会有对应的错误日志

再次打包,果然还是报错?

这个报错信息就很神奇,还是完全看不懂?!

其实这还是因为不兼容,这是安卓里面的一个插件gradle出问题了,这里是深坑,理论上说,我们按照版本对应关系设置即可,实际上一不小心就出现这个错误.unity对应的gradle版本和安卓对应的gradle插件版本关系如下图:

PS:Gradle版本和安卓Gradle插件版本是不同的东西

当我按照unity2021对应的gradle6.1.1去选择对应的安卓gradle插件版本4.0.1时,就会出现上面的报错.

解决办法

  1. 勾选这里,使用自定义的gradle版本

  2. 打开上面那个路径对应的baseProjectTemplate文件,设置classpath 'com.android.tools.build:gradle:3.4.3',应该是穿山甲这个unity版本的SDK是用的unity2019开发的,对照上面的表2019对应的就是这个版本.

再再次打包还是会报错?

不出意外,还是会报错.同样的不出意外,完全看不懂这个报错是干嘛的?!

我们从第二个报错中看到有AndroidManifest相关的信息,但是我们还没配置AndroidManifest怎么会报错呢?

答案是:Androidx和Android support库不兼容.

我们需要自定义AndroidManifest来覆盖unity默认设置,我拿穿山甲AndroidManifest直接修改,根据错误提示在android:appComponentFactory="androidx.core.app.CoreComponentFactory"上面加这么一行tools:replace="android:appComponentFactory",

不过单加这一行还是不行,还需要在xmlns:android="http://schemas.android.com/apk/res/android"下面加这么一行xmlns:tools="http://schemas.android.com/tools"

再再再次打包,还是会报错?

这次出意外了,打包成功!

后记

  1. 上面操作中很多步骤需要下载依赖,有些可能要用梯子,要注意一下是不是网络问题.

  2. AndroidManifest自己拷贝一份写在unity工程里面,里面要设置很多自定义的东西,这个参考穿山甲官网指示就行.

  3. 加独游群622093896,欢迎交流.