一 . 背景
unity 项目需要使用Android SDK (com.ironsource.sdk:mediationsdk:7.1.5.1),但是android SDK 中使用Kotlin 进行开发。用之前方式接入java sdk方式会报错(报错内容Failed resolution of :LKotlin/jvm/internal/Intrinsics)。unity 打包后运行闪退;
ps:完全了解unity 调用java 方法的大佬可直接拖到 unity 部分 第三步 配置kotlin
二 . 流程
-- 创建android studio 项目(编写unity 调用的方法)
-- 创建 unity 项目 (调用android 方法,配置kotlin)
三 . 上手
--------------------android-------------------
1.创建android项目(添加kotlin 依赖,可在创建的时候选择kotlin 会自动依赖)
1.1 build.gradle(Project ) 添加kotlin 版本号

1.2 build.gradle(Module) 添加kotlin 依赖


2.配置unity classes.jar 和UnityPlayerActivity
2.1 unity 2019 UnityPlayerActivity.class 不在classes.jar里面了, (如图Android2-1所示)copy 出来放到Android项目MianActivity同级目录下 (如图Android2-2所示)。


2.2 编写java 方法 (如图android 2-3)

3.修改AndroidMainifast.xml (别忘了添加项目权限)

google在android p为了安全起见,已经明确规定禁止http协议,为了兼容之前http协议接口而产生该配置。需要的话可进行配置(可百度搜索 networkSecurityConfig)

4.打包
第二步双击执行编译命令

----------------------android------------------
----------------------unity----------------------
1.编写调用java 的方法。

2.把andorid aar 包和 AndroidManifest.xml 放到sccess/Plugins/Android/目录下

ps:按照以前的unity 依赖android aar 的方式接入这个时候所有工作已经完成了,但是使用含有kotlin 编写的SDK,此时开始打包运行程序是运行不起来的。因为unity 没有kotlin 运行的依赖,所以需要以下第三部操作。
3.关键步骤配置kotlin 运行环境。
3.1 打开build Setting -> 切换到andorid -> 点击 Player Setting

3.2 配置打包build

gradle:是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。说人话就是配置项目依赖 ,构建信息,设置属性(android studio 莫名其妙出错的地方,哈哈哈哈)的配置文件。
3.3 unity 配置kotlin 依赖
不出意外的话,3.2这一步勾选以后会出现(如图 unity 3-3 的文件)可用记事本或者其他编辑器打开文件(如图 unity 3-4 所示),添加3-4红框中的两行。
implementation 'androidx.core:core-ktx:1.3.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.10"


添加依赖后即可运行含有kotlin 代码的android 程序。(弄清楚gradle 中字段的含义是很有必要的,可自行百度)
结束语:为了解决这个问题,尝试了很多方式。最后摸索出来这种方式,但是到目前来说也只是成功使用了这个含有kotlin 的sdk。会有其他问题吗? 答案是肯定的还要继续摸索。这种方式只是一个参考,要结合自己项目场景使用。(看到这里了解android 的朋友是不是会有新的想法,嘿嘿嘿)
网友评论