U3D 接入Android SDK 后,运行游戏闪退问题

最近在给手头的Unity项目接入QQ的Android SDK。

市面上常见的SDK,通常都只有Android和iOS原生的版本,并没有封装好的Unity插件的版本。

翻看了网上流传甚广的教程,接入SDK的方式是新建Android项目,写自己的Activity继承自UnityPlayerActivity类,在其中添加用于沟通SDK的接口,然后配置AndroidManifest.xml文件,打包后倒入Unity。(详细过程请自己搜索 Unity3D android SDK)。

这样做法的原理是,通过配置AndroidManifest,我们用我们自己创建的UnityPlayerActivity子类,代替了直接在Unity生成Android应用时生成的UnityPlayerActivity。因为我们的类继承了UnityPlayerActivity,所以类中除了具有我们附加的沟通SDK的方法之外,用于支持Unity启动和运行的功能依然存在。


在教程中,有一步是将Android项目中的AndroidManifest.xml拷贝到Unity中。

这一步是有问题的!

我们在AndroidManifest.xml中,只是添加了负责启动和开始运行游戏的UnityPlayerActivity子类。

这会导致我们直接打包出的游戏,在进入游戏,弹出Unity3D图标(如果使用的是免费版Unity)后,自动退出。

在Log中只能看见 onDestroy这样的内容,没有任何出错警告信息。


解决方法:

在添加SDK之前,将Unity项目导出Google Android Project。然后查看导出的AndroidManifest.xml。

你发现除了用于启动的,还有一个叫做 UnityVideoPlayer的Activity。

只需要把这个activity的配置复制粘贴到我们的项目中,便可以解决闪退的问题。

(最好将我们自己写的AndroidManifest.xml加上导出AndroidManifest.xml中关于权限、应用theme的配置语句)。

你可能感兴趣的:(Unity3D)