安卓插件推荐开发工具: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安装包,进行测试