因项目资源数过大,导致打包安卓后有部分音效无法播放,且没有任何报错

int64是creator3.6.0的,你可以参考3.6.0的定制下引擎

0.0额这怕是有点难了我再看看

你好能问下这个数值在as构建的时候是怎么生成的吗?因为我发现同一个apk装在两个不同的机子上,这个值竟然是固定的,也就是说这个值是cocos这边通过什么算法固定生成的。所以我想看看你们是咋弄的,导致会产生负数

这个值是从安卓JNIEnv获取音频文件信息的时候得到的,你可以调试这里看下JNIEnv是怎么生成这个值的。

大佬我这两天不停的打包测试发现了一个规律,就是我把apk改成zip解压后发现混淆里META-INF/CERT.SF这个文件中我先找到一个播放不了的音频所在的位置,那么从这个位置往下找到所有.mp3后缀的音频就都播不了了,但是中间的这些图片啊啥的其他资源都是能正常加载的,麻烦您那边想想会是啥问题啊

你试下把这段代码从3.6.0上拷贝过去,


再把这里改成int64_t

试下还会不会是负的

好的我试试


改了也看到改动了,但是还是有负的,然后为负的的时候还是无法播放
我这里没用那个int_64会报错,我看3.6是long long 就直接这样改了也能编译了

我这看的就是3.6.0,用的是int64_t,你是哪里看到用long long 的?


我再找个时间试下资源数很多的情况下会不会复现你这个问题。

你好,我又按照你说的改了下,发现是因为我在.h的声明文件里忘了改了,所以报错了,然后我改了下,可以正常打包,然后我测试还发现还是遇到了为负的数值,所以我在想是不是我取的时候就有问题了。
还有我这边资源很多引擎卡的基本上来回切换下能卡几秒,所以我们有一部分1G左右的资源是没有放到引擎里的,是通过商店里的如燕插件加载的,所以有一部分资源是放在外部的,打包的时候会手动挪到\build\jsb-link\assets下,外部资源加载测试都是没问题的,我看了挪动和不挪动时候的apk里的文件差异好像只有混淆哪里会多些内容其他的就是外部资源了没啥差异

这么多资源 能问问你的APK包有多大吗

2.47G :joy:

音频文件也是放在外部资源吗?可以尝试下把音频放到编辑器内打包的效果。

外部有一些,但是播放不出来的是放在编辑器内部的,这就很离谱了,我也尝试过都放到外面但是还是不行

这些音频文件单独放到一个新项目中试下看能不能播放的出来,排除下是不是资源数过大导致的。

我如果打包的时候不把外部哪1G的资源放进去,构建出来的apk去播放这些内部音频是都能播放的,但是我放进去了之后就不行了,所以我才会怀疑是资源数过多导致的,我也再多试试吧


你好我尝试在这里输出了下这个属性发现如果是%d就是负的-2068726372如果是%ld就是正的2226240924
然后我正在测这里

我感觉这边用int接收是不是会有问题啊?


我把这里后面两个参数的类型从int改为了long之后我再去测试发现为负数的值能正常播放了,我不确认会不会有其他什么影响,麻烦你们看下会不会影响到其他啥 :joy:

这里只有播放音频会调用到,不会影响到其他模块,你可以多测试下。

我这边测试了下,好像没啥问题了,我看了3.6的代码里这里也是这样写的,不清楚你们3.6会不会有相同的问题,还有你之前让我改的那些int64的我都撤回了,也没问题。看来取值是没问题的,只是这里传进来后被截取成int出了问题