Dear Bosch support,
I would like to integrate the BSEC library for using an BME680 sensor on an Android platform that uses the "armeabi-v7a" ABI on a Cortex-A7. Apparantly, none of the library binaries (".a" files) included in the download archive are suitable for this platform. Android mandates that all code for this ABI is compiled...
Additionally, the following alternatives are available:
So, the 4 possible variants are:
Ideally, there would be libraries for all four variants, but at least for the first one for maximum compatibility. The "RaspberryPI/PiZero_ArmV6-32bits" variant inside the download archive is almost suitable for Android, but uses "-mfpu=hard" ABI and is therefore incompatible with Android binaries. The Cortex-A7 variant does not support PIC code and isn't compatible either.
Could you provide binaries compiled with the mentioned flags?
Thank you very much!
Solved! Go to Solution.
Some additional information: Using the Android NDK, it is actually very easy to compile binaries suitable for the various Android variants:
Create a file "CMakeLists.txt" inside the BSEC source code directory. Assuming that the BSEC source code is located in some files "bsec1.c bsec2.c", add the following contents to the "CMakeLists.txt":
add_library(bsec STATIC bsec1.c bsec2.c)
Then, call CMake to generate a makefile:
cmake -DCMAKE_TOOLCHAIN_FILE=~/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=19 -DCMAKE_BUILD_TYPE=Release
"~/Android/Sdk/ndk-bundle" should be replaced by the NDK installation path. Then, compile by calling "make". Afterwards, the file "libbsec.a" contains an Android-compatible library for armeabi-v7a.
As documented by Android, adding the flags "-DANDROID_ARM_MODE=arm" and/or "-DANDROID_ARM_NEON=TRUE" will use the higher-performance "ARM" instruction set, and the NEON FPU instructions, respectively, as mentioned in the previous post.
We would like to evaluate using the BME680 and BSEC on an Android-based product, and would be grateful if you could provide Android-compatible binaries. The BSEC Website also advertises Android compatibility.
Thanks for the extra information and guidance. Your request was already transmitted to the appropriate team, but it will take a little longer than usual to provide feedback due to local public holidays. I will let you know here as soon as I a receive concrete update about if/when we could support this request.
Sorry for the late reply, I didn't get an email notification and Corona kept me out of the office.
The static library works perfectly on Android now. Thanks!