Unity 接入Android Kotlin SDK 问题(unity 2019.4.12f1,Android studio 4.2 beta-3)

一 . 背景

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 版本号

android-1

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


android 1-2-1


android 1-2-2


2.配置unity    classes.jar  和UnityPlayerActivity 

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

android 2-1


android 2-2

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

android 2-3

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

 

android 3-1

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

4android 3-2

4.打包

第二步双击执行编译命令

4android 3-2

                      ----------------------android------------------

                      ----------------------unity----------------------

1.编写调用java 的方法。

unity1-1


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


unity 2-1

ps:按照以前的unity 依赖android aar 的方式接入这个时候所有工作已经完成了,但是使用含有kotlin 编写的SDK,此时开始打包运行程序是运行不起来的。因为unity 没有kotlin 运行的依赖,所以需要以下第三部操作。

3.关键步骤配置kotlin 运行环境。

3.1 打开build Setting -> 切换到andorid -> 点击 Player Setting 


unity 3-1


3.2 配置打包build 

unity 3-2

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"

unity 3-3
unity 3-4

添加依赖后即可运行含有kotlin 代码的android 程序。(弄清楚gradle 中字段的含义是很有必要的,可自行百度)


结束语:为了解决这个问题,尝试了很多方式。最后摸索出来这种方式,但是到目前来说也只是成功使用了这个含有kotlin 的sdk。会有其他问题吗? 答案是肯定的还要继续摸索。这种方式只是一个参考,要结合自己项目场景使用。(看到这里了解android 的朋友是不是会有新的想法,嘿嘿嘿)


                      ----------------------unity-----------------------

你可能感兴趣的:(Unity 接入Android Kotlin SDK 问题(unity 2019.4.12f1,Android studio 4.2 beta-3))