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