欢迎来到我的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

unity接入quick sdk报错总结(Andriod)

  |   0 评论   |   0 浏览

推荐阅读:

1.Unable to start the daemon process

在这里插入图片描述

在 Android Studio 上新建项目,出现 Unable to start the daemon process。
解决步骤:

1、修改项目中gradle.properties文件,只要添加以下一行代码:

org.gradle.jvmargs=-Xmx512m

2、重启Android Studio

2.A problem occurred configuring root project “项目名”

2

.
解决办法:
在如下两个地方分别加上

google()

在这里插入图片描述

3.Program type already present: com.XXX

在这里插入图片描述

解办法:
1.这是依赖包冲突了,找到重复的依赖包去掉就可以了。
2.双击shift,全局查找冲突的这个IPackageDeleteObserve ,发现有两个包都引入了这个,删掉一个包,重新构建就OK了。

4.failed to read PNG signature: file does not start with PNG signature

在这里插入图片描述

排查后发现是因为图片的后缀名错误引起的,该图片的后缀是.png,但是其实际的格式是jpg,只需重命名该图片的后缀为.jpg即可解决问题。

5.Cannot resolve symbol XXX

在这里插入图片描述

首先根据报错,找到对应的出错的jar包,位置如下:
在这里插入图片描述

1.把对应的jar包引用先注释掉。
2.点击Sync Now
3.取消步骤1的注释。
4.点击Sync Now
完成上述步骤,错误解决~
如果你不知道Sync Now在哪的话,不妨看看下面的图示:

在这里插入图片描述

6.Unable to find tolua DllNotFoundException:tolua

在这里插入图片描述

DLLNotFoundException介绍

首先区分一个问题只要是与DLLNotFoundException相关的必然是丢失了DLL文件,不管是安卓还是Window还是Mac原理都是一样的。

Plugins文件夹

既然是跟DLLNotFoundException相关,必然是与Plugins文件夹相关,原因是因为Plugins文件夹中存放了我们使用插件的兼容dll,只有Plugins文件夹包含了对应平台的.dll或者.so文件才能让我们的插件正常使用。

Plugins文件夹中对应在Android文件夹中的文件后缀大部分为.so文件(之前安卓打包处理了半天这个问题,因为SVN更新不到这个后缀为.so的文件,所以一直在报DLLNotFoundException:tolua的错误,后来才意识到),平台选择的画直接选择Android即可,CPU选择与文件夹对应的即可(这个例子中对应的文件夹是arm64-v8a,所以对应的是ARM64)

在这里插入图片描述

如图所示文件夹,检查是对应文件是否有包含.so文件。没有的话可直接复制其他项目的同名文件。

7.测试提示"XXX接口应在UI现成上调用"

查看sdk接入文档案例发现如下案例:

final Activity activity = this;
    activity.runOnUiThread(new Runnable() {
   		//  ...
    });

百度runOnUiThread发现:在Android开发过程中,常需要更新界面的UI。而更新UI是要主线程来更新的,即UI线程更新。如果在主线线程之外的线程中直接更新页面 显示常会报错。
因此,在报错的接口处添加如下代码:

runOnUiThread(new Runnable() {
    @Override
     public void run() {
     }
 });

举例:
报错前的接口代码如下:

public void logout() {
    log("调用logout");
    User.getInstance().logout(activity);
}

修改后:

public void logout() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            log("调用logout");
            User.getInstance().logout(activity);
        }
    });
}

8. A WebView method was called on thread 'main'. All WebView methods must be called on the same thread

在这里插入图片描述
在这里插入图片描述
由于Unity发布Android的Apk时,只包含一个主Acitivity,俗称MainActivity,可以通过扩展该Activity,达到预期效果。扩展Unity的MainActivity时,注意AndroidManifest配置的主要Activity入口,例如使用自己扩展的AndroidManifest代替Unity默认的AndroidManifest,这样Activity入口就是我们自定义的Activity入口。
如图:SplashActivity这个active是我们扩展的active,继承自QuickSdkSplashActivity,如下:

public class SplashActivity extends QuickSdkSplashActivity {
    @Override
    public int getBackgroundColor() {
        Log.v("shirln=SplashActivity","");
        return Color.WHITE;
    }
    @Override
    public void onSplashStop() {
        //闪屏结束后,跳转到游戏界面
        Log.v("SplashActivity","shirln闪屏结束");
        Intent intent = new Intent(this, Helper.class);
        startActivity(intent);
        this.finish();
    }
}

当其为主active时,需要android继承自UnityActivity,这时需要在AndroidManifest.xml中,加上如下配置:

<meta-data android:name="unityplayer.UnityActivity" android:value="true" />

9.个别渠道收不到回调

可以尝试将设置回调的方法放在调用之前
例如,正常情况下代码如下:

protected void onCreate(Bundle savedInstanceState) {
        log("+ onCreate");
        super.onCreate(savedInstanceState);
        activity = this;
        initSDK();
        QuickSDK.getInstance().setIsLandScape(false);
        com.quicksdk.Sdk.getInstance().onCreate(activity);//初始化
        InitLoginNotifie();//设置回调
        InitSDKPrmissions();
    }

由于初始化方法在设置之前,可能导致回调不执行,这时候我们将回调挪到初始化前执行,如下:

protected void onCreate(Bundle savedInstanceState) {
        log(" + onCreate");
        super.onCreate(savedInstanceState);
        activity = this;
        initSDK();
        QuickSDK.getInstance().setIsLandScape(false);
        InitLoginNotifie();
        com.quicksdk.Sdk.getInstance().onCreate(activity);
        InitSDKPrmissions();
    }

10.个别渠道登陆验证失败

经过日志分析,发现传给服务器的数据少了两个字段,这两个字段是登录成功时,sdk返回过来的uid,token。一步步追踪日志,发现,是java这边,收到这两个字段,传给unity,unity那边没有收到消息。后面分析发现,是和unity通信时,unity那边还未初始化通信逻辑。
解决方法:调整java与unity通信时机。


标题:unity接入quick sdk报错总结(Andriod)
作者:mmzsblog
地址:https://www.mmzsblog.cn/articles/2022/05/04/1651647595258.html
-----------------------------
如未加特殊说明,此网站文章均为原创。
若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!
网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发