【BUG】2.4.9原生在onLoad中播放音频会奔溃,附demo

  • Creator 版本: 2.4.9

  • 目标平台: android

  • 之前哪个版本是正常的: 2.3.3

  • 重现概率: 100%

代码如下:

    @property(cc.AudioSource)
    as: cc.AudioSource = null;

    onLoad(){
        this.as.play()
    }

在onLoad中用AudioSource播放音频会奔溃(start方法中播放正常),报错信息如下:

E/jswrapper: ERROR: Uncaught TypeError: Cannot read property 'loaded' of undefined, location: src/cocos2d-jsb.js:0:0
    STACK:
    [0]audioEngine.play@jsb-adapter/jsb-engine.js:1523
    [1]proto.play@jsb-adapter/jsb-engine.js:1448
    [2]play@src/cocos2d-jsb.js:22085
    [3]e.onLoad@assets/main/index.jsc:60
    [4]eval@(no filename):3
    [5]anonymous@src/cocos2d-jsb.js:21601
    [6]invoke@src/cocos2d-jsb.js:21564
    [7]activateNode@src/cocos2d-jsb.js:31794
    [8]_activate@src/cocos2d-jsb.js:14778
    [9]runSceneImmediate@src/cocos2d-jsb.js:12698
    [10]anonymous@main.js:70
    [11]anonymous@src/cocos2d-jsb.js:15607
    [12]anonymous@src/cocos2d-jsb.js:18119
    [13]anonymous@src/cocos2d-jsb.js:37832
    [14]fireTimeout@jsb-adapter/jsb-builtin.js:2191
    [15]tick@jsb-adapter/jsb-builtin.js:2148

在2.3.3版本中使用正常,附上测试用例assets.zip (4.0 KB)

还有1个关于音频的问题 playOnLoad:如果设置为 true,音频源将在 onEnable 时自动播放。
查看源码发现
2.3的时候是每次onEnable都会播放
2.4的时候改为了第1次onEnable会播放
3.x的时候又改回了每次onEnable都会播放
这个操作看不懂了

  • Creator 版本: 2.4.9

  • 目标平台: android,arm64-v8a

  • 之前哪个版本是正常的: 2.3.3

当项目 MIN_SDK_VERSION > 22 时,平台库文件libcocos2djs.so不压缩了,导致包体大小增加近20M

请确保用的是同一个版本的ndk验证,若还有问题,麻烦说明ndk版本。
我这边用min_sdk_version 20 和 26 对比, ndk: 21.4.7075529 在2.4.9上未发现问题。

add the attribute ‘android:extractNativeLibs=“true”’ to your androidManifest.xml’s application. And the so files can be compressed.