安卓插件推荐开发工具:Android Studio,本人使用的版本是 4.0.1
1、创建空项目,请选择Empty Activity

2、创建新模块unity,请选择Android Library

3、复制unity依赖jar包到模块unity的目录libsunity中

classes.jar所在路径:
/Applications/Unity/Hub/Editor/2020.3.9f1c1/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar
另外unity 2019.3后的版本classes.jar不包含UnityPlayerActivity类了,解决方式如下:
【1】复制UnityPlayerActivity.java到模块src路径下
其位置在/Applications/Unity/Hub/Editor/2020.3.9f1c1/PlaybackEngines/AndroidPlayer/Source/com/unity3d/player
【2】使用unity 2019.3之前旧版本的jar包,本人使用的是旧版本的jar包:unity3d.jar
4、修改模块下的build.gradle文件
//添加一个本地仓库,并将libsunity目录作为仓库地址
repositories{
flatDir {
dirs 'libsunity'
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.2.0'
compileOnly files('libsunity/unity3d.jar')//只在编译的时候用到
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
5、扩展UnityPlayerActivity,接入第三方SDK
import com.unity3d.player.UnityPlayerActivity;
import java.util.List;
public class MainUnityActivity extends UnityPlayerActivity {}
安卓调用unity方法:
UnityPlayer.UnitySendMessage("AndroidInterface","OnInitResult",json);
配置安卓清单AndroidManifest.xml:
<activity android:name=".MainUnityActivity"
android:screenOrientation="landscape">
<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" />
</activity>
6、构建aar包,并且复制到Unity项目的Assets/Plugins/Android目录下

7、Unity调用安卓方法
AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject _javaObject = jc.GetStatic<AndroidJavaObject>(“currentActivity”);
javaObject.Call(“login”, platformId)
8、在Unity打包设置中使用自定义安卓清单
原因:由于我们的插件安卓清单中定义了Main Activity,如果不使用自定义安卓清单的话,打出的apk包安装成功后会出现2个应用入口,
这是因为Unity默认安卓清单中也定义了Main Activity,打包时会将插件安卓清单和默认安卓清单进行合并处理,造成应用安卓清单中有了2个Main Activity
【1】编辑器中build参数设置

【2】AndroidManifest.xml中删除activity配置,仅保留如下配置
<manifest
xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.unity3d.player”
xmlns:tools=”http://schemas.android.com/tools”>
<application>
</application>
</manifest>
9、build出apk安装包,进行测试