public AndroidJavaClass(string className); // className:指定类名java.lang.Class的通用实例的统一表示,是java里的类。// 加载 com.unity3d.player.UnityPlayer 类
AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
// 调用 com.unity3d.player.UnityPlayer 类中的 静态方法
ajc.CallStatic("Test");
ajc.CallStatic("Test","Hello"); // 带参数的静态方法
int sum = ajc.CallStatic("Sum", 1, 2); // 带参数和返回值的静态方法
// 实例化 com.unity3d.player.UnityPlayer 对象
AndroidJavaObject ajo = new AndroidJavaObject("com.unity3d.player.UnityPlayer");
// 调用 com.unity3d.player.UnityPlayer 类中的 实例方法
ajo.Call("Test");
ajo.Call("Test","Hello");
int sum = ajo.Call("Sum", 1, 2);
Unity发布Android的APK时,会使用Android的SDK构建,发布出来的APK只包含一个Activity,俗称MainActivity。在发布过程中,Unity会引入内置的Jar库(classes.jar),里面包含了Unity需要的库类,关键类UnityPlayerActivity就是Android程序的主要入口类,也就是MainActivity。
jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件aar:包含所有资源,class以及res资源文件。Unity发布Android的APK时,如果在Plugins/Android目录下不存在AndroidManifest文件,会使用Unity默认的AndroidManifest文件。
默认的AndroidManifest文件目录:Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk
如果存在AndroidManifest文件,Unity会使用它代替默认的AndroidManifest文件,这个AndroidManifest文件必须带有活动以及标签。
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
Internal:不需要签名,仅需Android SDK支持,不能导出工程。Gradle:需要签名,需要Android SDK 与 Gradle 支持,可以导出Android Studio工程,使用与需要与Android功能交互的项目。Unity在安卓平台选中Gradle打包出来,然后在Android Studio导入需要的SDK进行操作。Unity的classes.jar包和需要的SDK导入Android Studio新建的Library中,然后导出jar或者aar放到Unity中调用。创建一个Android Studio项目,视图切换到Project。
首先修改 app - build.gradle 文件。
将第一行,application 改为 library,这样就可以发布aar包
删掉 applicationId 那一行
// apply plugin: 'com.android.application'
apply plugin: 'com.android.library' // 不生成apk,生成aar包。
android {
compileSdkVersion 28 // sdk版本
buildToolsVersion "30.0.3"
defaultConfig