diff --git a/prefab_build.sh b/prefab_build.sh new file mode 100755 index 000000000..6da515a09 --- /dev/null +++ b/prefab_build.sh @@ -0,0 +1,90 @@ +#!/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"