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文件


    
     
    
     
    
     
     
    

    
        
            
                

                
            

             
        
    


  • 选中创建的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的包名"


  • 多说一句,aar包中的libs目录检查一下,unity中的classes.jar包不能存在,如果存在的话,删掉。我们前面已经对它们进行设置过,应该不会出现。以及.aar包也不能出现,上面提到过,有的话拿出来,放到Assets/Plugins/Android目录下。如果严格的按照步骤来的话,应该是不存在的才对。

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

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

你可能感兴趣的:(Unity对接SDK-Android Studio 导出aar方式)