Unity Android(四)使用AndroidStudio2020打包aar,提供Unity调用

PS:换新版本的AS后,打包aar后,到Unity里编译APK报了很多错/捂脸,特此总结

工具:Unity2018.4.36         AS2020.3

AS打包AAR以及常见报错

ps:假如你已下载AS2020.3.1并且已经配置好了sdk以及jdk

1.新建Project

File-New Project-Empty Activity

 2.以默认app模块作为Module,编译aar需要该模块

 在该Module内我们需要修改以下几处

1. build.gradle

修改后如下

plugins {
//    id 'com.android.application'
    id 'com.android.library'
}

android {
    compileSdk 30

    defaultConfig {
//        applicationId "com.example.myapplication"
        minSdk 21
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

这里'com.android.library' 才能编译aar,需要是library库

2.AndroidMainfest.xml文件

特别说明:以下修改xml去掉了MainActivity模块以及MainActivity.java文件。只编译第三方工具aar包。如需要MainActivity可参考我的下一篇文章 这里

3.  修改res目录

这里把两个themes.xml 的<style>都注释掉,快捷键CTRL+/

layout目录下的activity_main.xml删除掉

说明:注释掉这些会避免Unity打包APK时候报的找不到xx主题的报错,如AppCombat Darklight

4.编译AAR

选中app模块--Build--Make Project

 可以看到aar已经打出来了

以上编译aar的好处是只需要把aar导入Unity即可,不需要再导入xml文件(其实aar包中是包含xml文件的)。通常我们可以在aar包写诸如第三方的工具方法

Unity打包APK

把aar到Unity/Plugins/Android目录下即可

1.修改Unity的包名,上文有提到(经测试也可不修改)

2.修改Unity最小minimum API >=21

3.使用Internal或Gradle编译APK

如果你编译出来APK并且没有报错,恭喜!!!!

调用AAR里的java方法

细心的朋友可能发现了我已经把MainActivity删除了,新增了myUtils.java脚本

package com.example.myapplication;

public class myUtils {

    public static String getMsg()
    {
        return "200";
    }

}

 Unity里调用如下

//包名+类名
AndroidJavaClass AJC = new AndroidJavaClass("com.example.myapplication.myUtils");
string s2=AJC.CallStatic<string>("getMsg");

aar工程分享:

链接:https://pan.baidu.com/s/1p9efpnqKmYEcyEETQZtHpg  1234

参考文献:

1.https://blog.csdn.net/qq_21267961/article/details/111548739   Unity AAR打包(其他jar包引入lib目录后使用compileOnly后需要把jar文件拷贝到Unity-Plugins-Android目录下)

猜你喜欢

转载自blog.csdn.net/LinZhonglong/article/details/122372749