Unity 接入安卓渠道SDK问题总结
问题一 :报错“The method InitSdk must be in the main thread!”。
原因:一般SDK的初始化方法必须在主线程,如果不在主线程,则会报如上错误。
解决方法:使用runOnUiThread方法,强制其在UI主线程执行。
//以VivoSDK为例
MyActivity.this.runOnUiThread(new Runnable()
{
public void run()
{
try
{
VivoUnionSDK.initSdk(MyActivity.this, Config.APP_ID, false);
UnityPlayer.UnitySendMessage(Config.ObjectName, Config.InitSuccess, Config.Success);
}
catch ( Exception e)
{
UnityPlayer.UnitySendMessage(Config.ObjectName,Config.InitFailure,e.toString());
return;
}
}
问题二:确定方法InitSDK(或其他)方法存在的情况下,Unity调用Android方法报错“No-non static method found InitSdk”。
原因:Unity在调用Android方法时,会优先寻找普通方法,如果找不到会再去找静态方法。但是确定方法存在的时候,为什么还是报错,是因为Android的Jar有关类库和xml文件所在的Plugins文件夹,必须在Unity的Assets根目录下,否则可能存在无法找到的情况。
解决方法:Plugins移置Assets目录下。
问题三:游戏为横屏,SDK为竖屏的情况下,退出SDK登录,返回横屏游戏崩溃。
原因:因为游戏不支持横屏或者竖屏,切换可能导致崩溃。
解决方法:SDK一般都支持横竖屏,因此可以强制SDK根据游戏的横屏或者竖屏,在AndroidManifest.xml文件中配置
android:screenOrientation="landscape"属性(这个是强制横屏)
问题四:使用安卓模拟器无法成功打开SDK,或者某些手机无法成功打开SDK。
原因:系统原因
解决方法:使用对应渠道的手机去测试对应SDK。否则可能存在未知问题。
问题五:按照网上教程,Android studio仍然无法打出Jar包。
原因:最新版本的Android studio的Jar目录发生改变。
解决方法:新版本Jar包在bulid/intermediates/packaged-classes目录下
问题六:使用AndroidManifest.xml配置文件之后,我的应用图标变成系统默认的了。
原因:AndroidManifest.xml文件会使Unity配置的Icon失效。
解决方法:在AndroidManifest.xml配置文件中加入
android:icon="@drawable/app_icon"即可。
本文地址:https://blog.csdn.net/shazhiwutx/article/details/107401191