Unity3D的android项目启动报错:your hardware does not support this application

目录

1、产生这种问题的原因:

2.解决方案

2.1、排查unity导出的工程里面含有的so支持的是那些平台比如是下面两个;

2.2.排查接入的ysdk的aar文件里面包括的平台so,发现如下:

2.3、检查工程的grandle文件,确定是否引入了unity的so文件和ysdk的so文件,具体如下:


最近碰到个问题,unity导出的源工程,不接入第三方sdk的时候,游戏在各个平台的手机上面都可以正常运行。

但是只要在接入第三方的sdk后游戏就会在部分平台上面运行正常,部分上面报错:your hardware does not support this application。

下面以腾讯的ysdk做为示例(此处只是做为用例,并无其他意思,不要妄加猜测): 博主无脑接入了腾讯ysdk提供的aar文件,游戏部分机型上面弹出如题所示的错误问题。

具体截图如下:

1、产生这种问题的原因:

      手机最终运行的程序是cpu在计算运行的,不同的手机厂商会使用不同型号和不同厂商制作的cpu,

然而这些不同的cpu在计算的时候都有自己的一套规范,有的是x86规范的,有的是x86_64规范的,

要注意的是x86_64是x86的升级版本,也就是x86_64的手机如果找不到x86_64对应的资源就回去找x86的资源,armeabi也类似;

      然而导致这个问题的最终原因就是x86系列的芯片会自己适配x86规范以及相关的so资源,

如果你的手机cpu遵守的是sss规范,但是你的应用程序只提供了x86规范,就会出现:your hardware does not support this application

问题的原因确认找到了那么解决问题也就简单了:

         提供手机cpu需要的so资源就行,但是要注意,一套规范下面要提供所有业务需要的so,如果有一个业务so缺失了那么就会出错

2.解决方案

遇到此类问题,必然是jni的so文件引起的错误。所以解决方案也是针对so文件,具体方案如下:

2.1、排查unity导出的工程里面含有的so支持的是那些平台比如是下面两个;

x86

armeabi_v7a

 

2.2.排查接入的ysdk的aar文件里面包括的平台so,发现如下:

x86

x86_64

 

armeabi_v7a

armeabi

mips

 

我们明确的发现这里面比unity导出的平台支持so多出了好几项,需要做的是直接删除aar压缩包中多出的那几个文件夹

 

如上文中自己的工程中包含的是x86和armeabi_v7a那么需要删除第三方中的下面几个:

 

x86_64

armeabi

mips

2.3、检查工程的grandle文件,确定是否引入了unity的so文件和ysdk的so文件,具体如下:

 

sourceSets {
        main {
            jniLibs.srcDirs = ['src/XXXX/libs']    //其中src/XXXX/libs 是导出的so文件路径
        }
    }//*/

 

repositories{
    flatDir{
        dirs 'src'
    }
}

dependencies {
    //ysdk build jars
    ysdkCompile(name:'ysdk/aar/YSDK_Android_1.3.1_670',ext:'aar')
}

 

 

排查完上面的三条之后,再次编译调试工程,发现在所有平台上面都已正常运行。

注意:如果做完上面三步之后依然有问题,请在下面留言,或者直接qq我,本博客只适合AS的用户Eclipse用户请另找博客,谢谢
 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值