Environment:
- Windows 10
- Cocos2dx 3.10
- Android NDK r10e
- Wwise v2015.1.6_build_5553
Repro:
- Do everything according to the README at: WwiseDemo-cocos2dx\Readme Android.txt. until Step 4.2.
- Compile the Release version.
Error:
The compilation fails with the following error:
make.exe: Entering directory c:/Audiokinetic/Wwise_v2015.1.6_build_5553/SDK/samples/IntegrationDemo/cocos2d-x/proj.android' C:/NVPACK/android-ndk-r10e/build/core/build-binary.mk:466: warning: overriding commands for targetobj/local/armeabi-v7a/objs-debug/bullet_static/BulletMultiThreaded/SpuLibspe2Support.o'
C:/NVPACK/android-ndk-r10e/build/core/build-binary.mk:466: warning: ignoring old commands for target obj/local/armeabi-v7a/objs-debug/bullet_static/BulletMultiThreaded/SpuLibspe2Support.o' [armeabi-v7a] Compile++ arm : cocos2dcpp_shared <= WwiseWrapper.cpp [armeabi-v7a] Compile++ arm : cocos2dcpp_shared <= AkFileHelpers.cpp [armeabi-v7a] Compile++ arm : cocos2dcpp_shared <= AkDefaultIOHookBlocking.cpp [armeabi-v7a] Compile++ arm : cocos2dcpp_shared <= Helpers.cpp C:\Audiokinetic\Wwise_v2015.1.6_build_5553\SDK/samples/SoundEngine/Android/AkFileHelpers.cpp:16:17: fatal error: zip.h: No such file or directory #include <zip.h> ^ compilation terminated. make.exe: *** [obj/local/armeabi-v7a/objs-debug/cocos2dcpp_shared/C_\Audiokinetic\Wwise_v2015.1.6_build_5553\SDK/samples/SoundEngine/Android/AkFileHelpers.o] Error 1 make.exe: *** Waiting for unfinished jobs.... jni/../../Classes/WwiseWrapper.cpp: In function 'void LOGAKW(AkOSChar*)': jni/../../Classes/WwiseWrapper.cpp:30:70: warning: format not a string literal and no format arguments [-Wformat-security] __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, (const char*)&szBuff); ^ jni/../../Classes/WwiseWrapper.cpp: In function 'bool WWISE::initialize(void*)': jni/../../Classes/WwiseWrapper.cpp:271:44: error: 'class CAkFilePackageLowLevelIOBlocking' has no member named 'SetAssetManager' Wwise::Instance().GetLowLevelIOHandler()->SetAssetManager((AAssetManager*)mgr); ^ At global scope: cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat" make.exe: *** [obj/local/armeabi-v7a/objs-debug/cocos2dcpp_shared/__/__/Classes/WwiseWrapper.o] Error 1 make.exe: Leaving directoryc:/Audiokinetic/Wwise_v2015.1.6_build_5553/SDK/samples/IntegrationDemo/cocos2d-x/proj.android'
Error running command, return code: 2.
Diagnostics:
- - This seems to be caused by the newly-introduced libzip for the OBB feature.
- - AssetManager code has changed: It's now encapsulated into the sample code samples/SoundEngine/Android/AkFileHelpers.h/.cpp inside the CAkAPKLocation class (for the better).
Workarounds:
For Error #1:
Add this line to the proj.android/jni/Android.mk among the LOCAL_C_INCLUDES assignments:
LOCAL_C_INCLUDES += ${WWISESDK}/samples/SoundEngine/Android/libzip/lib
However, you'll soon run into linker error too. So you need to add libzip dependency into your makefile:
Add this to the end of your library module block:
include $(CLEAR_VARS)
LOCAL_MODULE := zip
LOCAL_SRC_FILES := $(SDK_LIB_DIR)/libzip.a
include $(PREBUILT_STATIC_LIBRARY)
Then add this to the end of your "LOCAL_STATIC_LIBRARIES" linker flag:
Don't forget to add the trailing "" to the lib before it.
For Error #2:
Remove the following line from the cocos2dx-demo code C:\Audiokinetic\Wwise_v2015.1.6_build_5553\SDK\samples\IntegrationDemo\cocos2d-x\Classes\WwiseWrapper.cpp:
Wwise::Instance().GetLowLevelIOHandler()->SetAssetManager((AAssetManager*)mgr);
Since AssetManager is now hidden to low-level I/O's client code, the proper fix would be to remove the AssetManager dependency from WwiseWrapper altogether.
Finally, recompile the demo and you should be good to go.
Environment:
Repro:
Error:
The compilation fails with the following error:
Diagnostics:
Workarounds:
For Error #1:
Add this line to the proj.android/jni/Android.mk among the LOCAL_C_INCLUDES assignments:
LOCAL_C_INCLUDES += ${WWISESDK}/samples/SoundEngine/Android/libzip/libHowever, you'll soon run into linker error too. So you need to add libzip dependency into your makefile:
Add this to the end of your library module block:
Then add this to the end of your "LOCAL_STATIC_LIBRARIES" linker flag:
Don't forget to add the trailing "" to the lib before it.
For Error #2:
Remove the following line from the cocos2dx-demo code C:\Audiokinetic\Wwise_v2015.1.6_build_5553\SDK\samples\IntegrationDemo\cocos2d-x\Classes\WwiseWrapper.cpp:
Wwise::Instance().GetLowLevelIOHandler()->SetAssetManager((AAssetManager*)mgr);Since AssetManager is now hidden to low-level I/O's client code, the proper fix would be to remove the AssetManager dependency from WwiseWrapper altogether.
Finally, recompile the demo and you should be good to go.