This page contains information that is specific to using the Wwise SDK for the Android platform.
- You can simply install the standard Android SDK Tools, as well as the standard Android NDK. Wwise is using SDK Tools 26.1.1, and NDK r17c.
You can build the Android libraries using the script BuildAllAndroid.cmd with the desired platform and configuration (i.e. BuildAllAndroid.cmd armeabi-v7a debug) on windows in the SDK/source/SoundEngine folder. This will call ndk-build with the appropriate parameters. This script can target the 4 supported architectures (v7a, x86, v8a-64 and x86_64) in 3 configurations (debug, profile, release).
In recent OS versions, Google introduced the "fast audio path". This bypasses some of the internal processing if some conditions are met, drastically reducing the latency of the OS and hardware processing. Please read Controlling Latency on Android for more details.
There are three ways of deploying and loading SoundBanks on Android:
- Deploy SoundBanks as part of the Android application package (APK).
Before deploying the application to devices, the SoundBanks have to be placed in the "assets" sub-folder of the Android NDK project and packaged normally with the APK (or an equivalent process with other tools). To read bank files from the APK, you must specify the path to the banks relative to the standard "assets" directory within the APK archive. Call
CAkDefaultIOHookBlocking::SetBasePath()to do so. This is not done automatically.
- Deploy SoundBanks as part of an Android Application Split Binary (a.k.a. OBB). To read SoundBanks from an OBB, your banks must be in the same relative path within the OBB as in the main APK.
- Deploy SoundBanks to the Android device file system directly. The SoundBanks can be deployed anywhere in the file system of the device. You can add as many directories as you want with
The default implementation of the low-level IO found in $<Wwise>/SDK/samples/SoundEngine/Android can access APK, OBB, and POSIX files. You must call the function
CAkDefaultIOHookBlocking::InitAndroidIO with a JavaVM and the NativeActivity to initialize both APK and OBB readers.
||Note: The OBB archive must be unencrypted for the default Low Level IO to work. If not, you'll need to write your own IO.|
||Note: The OBB reading is done with libzip, please check the license under Libzip. If you do not accept the license, you can disable the use of LibZip by defining the symbol "REMOVE_LIBZIP" in your compilation flag. If so, you'll need to write your own IO hook to read OBB or uncompress the OBB before use.|
The IO system will search for files in the given paths in the reverse order, newest added first, APK content last. This allows for DLC content to replace APK content.
Refer to Low-Level I/O on how to implement the low-level I/O submodule.
The Wwise SDK precompiled libraries come compiled in these flavors:
- armeabi-v7a with NEON
- x86 with SSE
- arm64-v8a with NEON
- x86_64 with SSE