Unity对接SDK-Android Studio 导出aar方式

简介

网上很多教程,但都是一些比较旧的,这里整理出一份新的,以供参考。
这篇主要讲的是AS中对平台的SDK进行必要的接口包装,发布成aar放到Unity中,Unity中使用和Android通讯的方式来调用。最后从Unity打包成apk文件。
主要关注点:AndroidManifest.xml.aar.jar

环境

Unity2018.4.0,android studio 3.4.2,Gradle4.1
重要事前说前面,一定注意Unity的版本和Gradle版本。版本不匹配会造成运行错误的。整个打包过程是可以进行的,这点最坑。下面是参考图

Snipaste_2019-07-16_13-44-49.png
  • 如果AS打aar包的话到Unity最终生成apk的话,以Unity内置的Gradle版本为主。AS中的gradle版本不能高于Unity中的gradle版本
  • 如果是Unity导出AS工程到AS中生成apk的话,以AS的版本为主。Unity中的gradle版本不能高于AS中的gradle版本
  • AS查看Gradle版本如下图


    image.png
  • Unity查看Gradle版本方式,使用Gradle方式导出一个Android工程,在根目录下有个build.gradle文件,和AS中的一样,能看到Gradle版本。


    image.png

创建Android工程

创建一个空的android工程,工程名字和包名没有强迫症的话不用纠结,后续发布aar时不出导出这个工程的,只是导出它里面的自定义模块,参考下图

image.png

image.png

image.png

Android工程中创建Module

我们之后要做的业务逻辑都在这个Module中,而这个Module才是我们真正需要的,网上也有教程直接把Android工程改成只导出一个Module,这里就不在额外介绍了,为了不被混淆,就容忍一些没用的东西存在吧!Module的包名可以根据自己需求命名,这个包名在之后的Unity工程里会做更改的,参考下图。

image.png

image.png

image.png

准备依赖包

  • Unity内置的jar包
      发布供Unity使用的aar包,必不可少的需要Unity的classes.jar包,存在目录:UnityEditor的安装目录下\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar
    更早的Unity版本这里就不介绍了,存在的目录有差异,自行网上查找。
  • 平台SDK包
      对接哪个平台的自动到相应的官网查找,这里示例使用的是快手SDK的融合包 ,一般提供的有两种,一种aar,一种是jar。
  • 另外Pieces_Jing有篇文章介绍使用反射方式来进行Untiy和Android之间的调用,推荐参考一下!
  • 把整理好的包放到Module/libs目录下,依次 右键 -> Add As Library中,参考下图


    image.png
  • 找到build.gradle(Module:模块名字)的文件中的dependencies项,一般在最下面

dependencies {
    // 如果libs中的某些jar包不想在发布aar中存在的话,这里要注释掉,比如Unity中的classes.jar不能包含,不然编译apk会报错
    //implementation fileTree(include: ['*.jar'], dir: 'libs') 
    compileOnly files('libs/classes.jar')    //  compileOnly 的方式是项目中可以使用,但发布jar包中不会包含进去
    compileOnly files('libs/kwaisdk-release-1.3.2.aar') // aar的包同样不能包含在发布的aar包中,Unity中不支持这样的引用关系
    implementation files('libs/rx-classes.jar')  // implementation  的方式是发布aar中包含这个jar包
    implementation files('libs/rxjava-2.1.0.jar')
    implementation files('libs/reactive-streams-1.0.2.jar')
}
  • 之后创建MainActivity就和以前的方式一样了,这里就不在多说,下面重点说一下AndroidManifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.windsoul.allinlibrary"><!-- 这个包名要在发布后复制到Assets/Plugins/Andorid/ 目录下 -->
    <!-- 网络权限,登录必须 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 网络信息获取权限,kanas打点需要记录网络信息,以及sdk需要判断是wifi还是4g的case -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 文件读取权限,allin 强更必须 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 安装权限,targetSdkVersion>=26时,allin强更安装apk需要 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- 手机设备信息如imei权限获取,kannas需要 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <!-- 加上这个,Unity中需要 -->
        </activity>
    </application>

</manifest>
  • 选中创建的Module 发布 Build -> Make Module "所创建的的Module名字",等待结束后可以在build/outputs/aar/看到生成的aar文件,参考下图

    image.png

    image.png

  • 上图中所示的aar文件就是我们想要的,不过还需要进行加工一下,使用解压文件可以打开它,可以看到熟悉的样子,和Eclipse中对接SDK方式很相似。其实就是一个鬼玩意。


    image.png
  • 把它里面的AndroidManifest.xml文件放到Assets/Plugins/Android目录下,然后从aar包中删掉它

  • 打开AndroidManifest.xml找到package="改成Unity的包名"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.windsoul.allinlibrary"><!-- 这个包名要在发布后复制到Assets/Plugins/Andorid/ 目录下 -->
  • 多说一句,aar包中的libs目录检查一下,unity中的classes.jar包不能存在,如果存在的话,删掉。我们前面已经对它们进行设置过,应该不会出现。以及.aar包也不能出现,上面提到过,有的话拿出来,放到Assets/Plugins/Android目录下。如果严格的按照步骤来的话,应该是不存在的才对。

  • 如果Module中有引用的aar包的话,也一并复制到Assets/Plugins/Android目录下。

  • 到此为止,就可以进行Unity打包了。这里不在多说,和正常的发布流程一致

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代码的令狐葱阅读 3,809评论 0 2
  • @font-face{ font-family:"Times New Roman"; } @font-face{ ...
    niki阅读 436评论 0 1
  • 0~4个月宝宝的睡眠特点——《婴幼儿睡眠圣经》读书笔记 这是糕妈的公号推送的第一篇文章。 认真看完这篇读书笔记,会...
    会儿永远幸福阅读 274评论 0 0
  • 没有文化的产品只能卖裸价 没有文化的公司做不到百年企业 在一个企业中,思想与思想的统一叫同心同德,思想与行为的统一...
    徐朋辉阅读 263评论 1 0
  • 最近在看教养的迷思一书,特别困惑,可以想象儿童发展心理学派会做出多么激烈的反击!看看这三个命题就知道了: 命题1:...
    澜妈喵喵阅读 353评论 0 2