#!/bin/bash # Test that the prefab binary exists if hash prefab 2>/dev/null; then echo "Prefab is installed" else echo "Prefab binary not found. See https://github.com/google/prefab for install instructions" exit 1 fi # Get the version string from the source major=$(grep "#define OBOE_VERSION_MAJOR" include/oboe/Version.h | cut -d' ' -f3) minor=$(grep "#define OBOE_VERSION_MINOR" include/oboe/Version.h | cut -d' ' -f3) patch=$(grep "#define OBOE_VERSION_PATCH" include/oboe/Version.h | cut -d' ' -f3) version=$major"."$minor"."$patch echo "Building libraries for Oboe version "$version ./build_all_android.sh mkdir -p build/prefab cp -R prefab/* build/prefab ABIS=("x86" "x86_64" "arm64-v8a" "armeabi-v7a") pushd build/prefab # Remove .DS_Store files as these will cause the prefab verification to fail find . -name ".DS_Store" -delete # Write the version number into the various metadata files mv oboe-VERSION oboe-$version mv oboe-VERSION.pom oboe-$version.pom sed -i '' -e "s/VERSION/${version}/g" oboe-$version.pom oboe-$version/prefab/prefab.json # Copy the headers cp -R ../../include oboe-$version/prefab/modules/oboe/ # Copy the libraries for abi in ${ABIS[@]} do echo "Copying the ${abi} library" cp -v "../${abi}/liboboe.so" "oboe-${version}/prefab/modules/oboe/libs/android.${abi}/" done # Verify the prefab packages for abi in ${ABIS[@]} do prefab --build-system cmake --platform android --os-version 29 \ --stl c++_shared --ndk-version 21 --abi ${abi} \ --output prefab-output-tmp $(pwd)/oboe-${version}/prefab result=$?; if [[ $result == 0 ]]; then echo "${abi} package verified" else echo "${abi} package verification failed" exit 1 fi done # Zip into an AAR and move into parent dir pushd oboe-${version} zip -r oboe-${version}.aar . 2>/dev/null; zip -Tv oboe-${version}.aar 2>/dev/null; # Verify that the aar contents are correct (see output below to verify) result=$?; if [[ $result == 0 ]]; then echo "AAR verified" else echo "AAR verification failed" exit 1 fi mv oboe-${version}.aar .. popd # Zip the .aar and .pom files into a maven package zip oboe-${version}.zip oboe-${version}.* 2>/dev/null; zip -Tv oboe-${version}.zip 2>/dev/null; # Verify that the zip contents are correct (see output below to verify) result=$?; if [[ $result == 0 ]]; then echo "Zip verified" else echo "Zip verification failed" exit 1 fi popd echo "Prefab zip ready for deployment: ./build/prefab/oboe-${version}.zip"