Unity+Android替换默认启动类UnityPlayerActivity.java
*本文中的方案,适用于支持Java文件打包的Unity2018.2及以上版本。
Android项目都会有一个默认启动类,通过Unity打包成AndroidStudio项目后,可以看到,在主包下面会有一个文件UnityPlayerActivity.java,这个就是Unity打包的工程的默认启动类。
一般来说,这个类是不需要修改的,但是我就遇到了特殊情况...
在接入第三方平台SDK的时候,因为某些原因,需要设置Activity的启动模式为sigleTop(Unity默认设置为sigleTask)。然而在Unity工程中通过Manifest文件直接修改该设置是无法生效的,因为在打包的时候,unity会重置该设置。好气啊。
然而,Unity修改启动方式是根据启动类来设置的,所以,如果能够把默认启动类替换成Unity不认识的一个,该设置就不会被重写了。
首先在AndroidStudio中新建一个继承自UnityPlayerActivity的类,暂且命名为UnityPlayerActivityTest。
如果使用继承的方式会导致打包失败,可以改成直接修改文件名的方式。
直觉和经验告诉我,Android启动类、权限这种东西,肯定是要在Manifest文件中修改的。找打AndroidManifest.xml文件,可以找到关于启动类设置相关的
可能不同的版本打包出来的内容略有不同,但是UnityPlayerActivity的设置就在这个条目中。将UnityPlayerActivity修改为UnityPlayerActivityTest。
注意,这里的默认内容为
android:name="com.unity3d.player.UnityPlayerActivity"
如果只是简单的修改为
android:name="com.unity3d.player.UnityPlayerActivityTest"
打包的apk工程安装后是无法打开的。
一定要把包名修改为UnityPlayerActivityTest所在的包名。
将启动类文件和Manifest文件放到Unity项目中,启动类的Java文件可以放在自定义位置,Manifext文件必须放在Plugins/Android/目录下。
打包,运行,一切OK。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
