How to build OpenAL-Soft and set up it in Qt Creator for Android
-
@8Observer8 That is very old. Then your JDK version is wrong at the first place.
-
Android NDK: The armeabi ABI is no longer supported. Use armeabi-v7a.
I use
armeabi-v7a
when I build for smartphone (and x86_64 - for emulator) but how to usearmeabi-v7a
when I build from the console? It will be good to have at lease a library for smartphone. -
@8Observer8 show Projects->Build(Android)->Build Settings
click qmake "Details" button under Build Steps. You will see options for ABIs on QtCreator 11.0.1(comes with Qt-5.15.2)
I use arm64-v8a and my JDK version is 11. My target Android versions are 12/13. -
@8Observer8 I guess you have a different version of qt creator. I do not know yours.
-
@8Observer8 You build OpenAL-Soft for Android 7. I did not say it does not support Android 7.
Instead you need JDK 11 to build C++ apps for Android 7. But in your settings, JDK 17 is used. -
@JoeCFD said in How to install OpenAL-Soft for Android in Qt Creator by copying OpenAL-Soft sources into a project:
Instead you need JDK 11 to build C++ apps for Android 7. But in your settings, JDK 17 is used.
I tried to run apps with Box2D and Bullet Physics on real smartphone Redmi 4x with Android 7. I use JDK 17 and it works. I tried to run an example with QMediaPlayer on my smartphone and it plays music. I think I found a solution. I should try to use Bass Audio Library for 3D sounds on Android. It's is too difficult to add OpenAL-Soft directly with sources. Now I know this information:
Note that OpenAL is LGPL-licensed. Which means you need to release the source to your application if you make it part of your application.
-
@8Observer8 Great it works for you with JDK 17. You can still build OpenAL-Soft to dynamic lib and add it to your app for Android. It does not violate LGPL-license.
-
@JoeCFD what do you think about this? https://github.com/AerialX/openal-soft-android How to build it?
-
Does anyone have compiled libraries (.so) of OpenAL-Soft for Android? I mean
armeabi-v7a
andx86_64
. I can't find step by step instructions. -
@8Observer8 you may need to change CMakefile or create a pro file for Android. And build it for Android. It is just another project.
-
@JoeCFD A lazy way to do it is that you find out all settings(flags and libs) for Android build in the Makefile(made from pro or cmakefile) of your Android project. Then, you open CMakefile of OpenAL-Soft with cmake-gui and add(or replace) all these settings to the corresponding locations. Do make and you will get the right lib for Android. I did it once for some testing and it worked.
Sure it is better to do it properly. It should not be that hard.
-
I found the simples way! I just download these sources: https://github.com/AerialX/openal-soft-android and built it using CMake. The
libopenal.so
library was created. I created the "Play" button. I built my first app that plays music using OpenAL! It works on my smartphone! It's cool!My step-by-step guide for Qt 6.2.4 MinGW 64-bit:
- Download these sources: https://github.com/AerialX/openal-soft-android
- Download CMake (add it to the Path variable): https://cmake.org/download/
- Go to
openal-soft-android
from the console (cd openal-soft-android) - Copy the next commands to the console (don't forget to change the path to your
android.toolchain.cmake
)
cmake -G "MinGW Makefiles" -S . -B ./build -DCMAKE_TOOLCHAIN_FILE=E:\AppData\Android\SDK\ndk\22.1.7171670\build\cmake\android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=29
cmake --build ./build -j 4
The
libopenal.so
will be created. Create a new Qt project. Create thejniLibs/armeabi-v7a
folder inside of your Qt project. And copylibopenal.so
inside ofjniLibs/armeabi-v7a
.Create the
libs\openal-soft\include
folder inside of your Qt project and copy theAL
folder there.Add these settings to your pro-file:
INCLUDEPATH += $$PWD/libs/openal-soft/include contains(ANDROID_TARGET_ARCH, armeabi-v7a) { ANDROID_EXTRA_LIBS += $$PWD/jniLibs/armeabi-v7a/libopenal.so }
Added 2/25/2024
I use these settings to run on Windows, real device, and Android Emulator:
CONFIG("windows") { INCLUDEPATH += $$PWD/libs/openal-soft-desktop-1.23.1/include LIBS += -L$$PWD/libs/openal-soft-desktop-1.23.1/lib/x64 LIBS += -lOpenAL32.dll } CONFIG("armeabi-v7a") { INCLUDEPATH += $$PWD/libs/openal-soft-android/include contains(ANDROID_TARGET_ARCH, armeabi-v7a) { ANDROID_EXTRA_LIBS += $$PWD/jniLibs/armeabi-v7a/libopenal.so } } CONFIG("x86") { INCLUDEPATH += $$PWD/libs/openal-soft-android/include contains(ANDROID_TARGET_ARCH, x86) { ANDROID_EXTRA_LIBS += $$PWD/jniLibs/x86/libopenal.so } }
-
-
This post is deleted!
-
-