From a97c0a19ee05030638d02bc2890b3bfaefc4ad66 Mon Sep 17 00:00:00 2001
From: csf <csf@breakbeat.cn>
Date: Tue, 7 Jun 2022 16:45:06 +0800
Subject: [PATCH] add build_android_deps.sh

---
 flutter/build_android_deps.sh | 81 +++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100755 flutter/build_android_deps.sh

diff --git a/flutter/build_android_deps.sh b/flutter/build_android_deps.sh
new file mode 100755
index 000000000..566196d52
--- /dev/null
+++ b/flutter/build_android_deps.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# Build libyuv / opus / libvpx / oboe for Android 
+# Required: 
+#   1. set VCPKG_ROOT / ANDROID_NDK path environment variables
+#   2. vcpkg initialized
+#   3. ndk >= 22 (if ndk< 22 you need to change LD as `export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld`)
+
+if [ -z "$ANDROID_NDK" ]; then
+  echo "Failed! Please set ANDROID_NDK"
+  exit 1
+fi
+
+if [ -z "$VCPKG_ROOT" ]; then
+  echo "Failed! Please set VCPKG_ROOT"
+  exit 1
+fi
+
+PREFIX=$VCPKG_ROOT/installed/arm64-android/
+
+echo "*** [Start] Build opus / libyuv from vcpkg"
+export ANDROID_NDK_HOME=$ANDROID_NDK
+pushd $VCPKG_ROOT
+$VCPKG_ROOT/vcpkg install opus --triplet arm64-android
+$VCPKG_ROOT/vcpkg install libyuv --triplet arm64-android
+popd
+echo "*** [Finished] Build opus / libyuv from vcpkg"
+
+echo "*** [Start] Build libvpx"
+git clone -b v1.11.0 --depth=1 https://github.com/webmproject/libvpx.git build/libvpx
+pushd build/libvpx
+export NDK=$ANDROID_NDK
+export HOST_TAG=linux-x86_64
+export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
+export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
+export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
+export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
+export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld.gold  # if ndk < 22, use aarch64-linux-android-ld
+export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
+export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
+
+./configure --target=arm64-android-gcc \
+            --enable-pic --disable-vp8 \
+            --disable-webm-io \
+            --disable-unit-tests \
+            --disable-examples \
+            --disable-libyuv \
+            --disable-postproc \
+            --disable-vp8 \
+            --disable-tools \
+            --disable-docs \
+            --prefix=$PREFIX
+make -j5
+make install
+
+popd
+echo "*** [Finished] Build libvpx"
+
+
+echo "*** [Start] Build oboe"
+git clone -b 1.6.1 --depth=1 https://github.com/google/oboe build/oboe
+patch -d build/oboe -p1 < ../src/oboe.patch
+pushd build/oboe
+cmake -DBUILD_SHARED_LIBS=true \
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+        -DANDROID_TOOLCHAIN=clang \
+        -DANDROID_STL=c++_shared \
+        -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
+        -DCMAKE_INSTALL_PREFIX=$PREFIX \
+        -DANDROID_ABI=arm64-v8a \
+        -DANDROID_PLATFORM=android-21
+make -j5
+make install
+mv $PREFIX/lib/arm64-v8a/liboboe.a $PREFIX/lib/
+popd
+echo "*** [Finished] Build oboe"
+echo "*** [All Finished]"
+
+# rm -rf build/libvpx
+# rm -rf build/oboe
\ No newline at end of file