美文网首页
将Unity项目改为aar模块

将Unity项目改为aar模块

作者: 挠头小鸡腿 | 来源:发表于2019-03-22 09:31 被阅读0次

    将Unity项目改为aar模块

    1.Unity导出gradle项目

    由负责Unity开发的同事将Unity项目导出gradle项目。

    2.将gradle项目改为aar模块

    2.1 修改AndroidManifest.xml文件

    • 修改application
      将application中的Android:icon删掉

    • 修改启动Activity

    <!--将默认开启Activity的过滤删掉-->
    <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
     <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
    
    • 修改minSdkVersion和targetSdkVersion
    <!--将此改为你项目的参数-->
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
    

    2.2 修改build.gradle文件

    • 修改apply plugin
    apply plugin: 'com.android.library'
    
    • 删除applicationId

    3.打包aar

    • 执行打包命令,可以利用Android Studio的Gradle
    执行打包命令
    • 获取aar
      aar包地址:根目录\build\outputs\aar

    4. 使用aar

    4.1 导入aar

    • 将第3步获取到的aar放在要应用的项目的
      根目录\app\libs

    • 修改模块的build.gradle

    1. 修改aar目录
    android {
      //...
      repositories {
        flatDir {
            dirs 'libs' //this way we can find the .aar file in libs folder
        }
      }
    }
    
    1. 添加aar依赖
    implementation(name: 'test-release', ext: 'aar')
    

    至此,Unity改为aar并导入已经完成。

    Q&A

    1. Q: unity项目中有视频,导入aar后,应用不能播放视频并存在警告
     W/Unity: AndroidVideoMedia OpenExtractor: file is compressed, not supported
    

    A: 修改build.gradle文件,添加如下代码即可

    android{
      //...
      aaptOptions {  noCompress '.unity3d', '.ress', '.resource', '.obb'  }
    }
    
    1. Q:在我的项目中的Unity aar的Activity使用了摄像头,其中的sdk存在摄像头释放问题,在不断的调用Unity aar的时候可能会发生项目闪退的问题。

    A:在本身的Unity应用并不存在该问题,因为Unity应用退出会退出进程释放摄像头资源,但是在我的项目中,退出Unity Activity不会退出本身进程,导致摄像头存在释放资源问题,并且使用的sdk只能在本身包名的进程中使用,新建进程并不能使用。
    因此,我的解决办法是在本身项目中的其他Activity运行在新建的进程,使用aar的时候会使用本身包名进程,在退出unity项目Activity,该进程会退出,以达到释放摄像头资源的效果。

    <activity android:name=".MainActivity"
      android:process=":test"/>
    
    • 没进入Unity模块时的进程状况


      没进入Unity模块时的进程状况
    • 进入Unity模块时的进程状况


      进入Unity模块时的进程状况

    Unity模块的Activity在本包名的进程中运行,退出Unity模块的Activity时com.unitydemo进程会退出,已达到解决释放资源的问题。

    相关文章

      网友评论

          本文标题:将Unity项目改为aar模块

          本文链接:https://www.haomeiwen.com/subject/trokvqtx.html