summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-15 21:45:57 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-18 15:57:19 +0000
commit4897b4d7d16bc02186582742a8866f5e8e6571bd (patch)
treeddd97f35441f2fc1c6e1b6212e7b66be030067ce
parent193a616bfb31dd38264f0bfbcd7ec5006dbe7979 (diff)
downloadmullvadvpn-4897b4d7d16bc02186582742a8866f5e8e6571bd.tar.xz
mullvadvpn-4897b4d7d16bc02186582742a8866f5e8e6571bd.zip
Create helper script to build app for Android
-rw-r--r--android/build.gradle17
-rwxr-xr-xbuild-apk.sh76
2 files changed, 76 insertions, 17 deletions
diff --git a/android/build.gradle b/android/build.gradle
index bef41c46f4..4ee2ce7bd3 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -62,11 +62,6 @@ android {
variant.mergeAssetsProvider.configure {
dependsOn copyApiRootCertificate
}
-
- variant.ndkCompileProvider.configure {
- dependsOn copyMullvadJni
- dependsOn copyWireguardGo
- }
}
}
@@ -114,18 +109,6 @@ task format(type: FormatTask, group: 'formatting') {
lint.dependsOn lintKotlin
-task copyMullvadJni(type: Copy) {
- from "$repoRootPath/target/aarch64-linux-android/debug"
- include 'libmullvad_jni.so'
- into "$extraJniDirectory/arm64-v8a"
-}
-
-task copyWireguardGo(type: Copy) {
- from "$repoRootPath/dist-assets/binaries/aarch64-linux-android"
- include 'libwg.so'
- into "$extraJniDirectory/arm64-v8a"
-}
-
task copyApiRootCertificate(type: Copy) {
from "$repoRootPath/dist-assets"
include "api_root_ca.pem"
diff --git a/build-apk.sh b/build-apk.sh
new file mode 100755
index 0000000000..e69c57c563
--- /dev/null
+++ b/build-apk.sh
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+set -e
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+cd "$SCRIPT_DIR"
+
+PRODUCT_VERSION="$(node -p "require('$SCRIPT_DIR/gui/package.json').version" | sed -Ee 's/\.0//g')"
+
+if [[ "${1:-""}" == "--dev-build" ]]; then
+ BUILD_TYPE="debug"
+ GRADLE_TASK="assembleDebug"
+ APK_SUFFIX="-debug"
+ CARGO_FLAGS=""
+else
+ BUILD_TYPE="release"
+ GRADLE_TASK="assembleRelease"
+ APK_SUFFIX=""
+ CARGO_FLAGS="--release"
+
+ if [ ! -f "$SCRIPT_DIR/android/keystore.properties" ]; then
+ echo "ERROR: No keystore.properties file found" >&2
+ echo " Please configure the signing keys as described in the README" >&2
+ exit 1
+ fi
+fi
+
+if [[ "$BUILD_TYPE" == "debug" || "$(git describe)" != "$PRODUCT_VERSION" ]]; then
+ GIT_COMMIT="$(git rev-parse --short HEAD)"
+ APK_VERSION="${PRODUCT_VERSION}-dev-${GIT_COMMIT}"
+else
+ APK_VERSION="$PRODUCT_VERSION"
+fi
+
+ARCHITECTURES="aarch64 armv7 x86_64 i686"
+
+cd "$SCRIPT_DIR/android"
+./gradlew --console plain clean
+mkdir -p "${SCRIPT_DIR}/android/build/extraJni"
+
+cd "$SCRIPT_DIR"
+
+for ARCHITECTURE in $ARCHITECTURES; do
+ case "$ARCHITECTURE" in
+ "x86_64")
+ TARGET="x86_64-linux-android"
+ ABI="x86_64"
+ ;;
+ "i686")
+ TARGET="i686-linux-android"
+ ABI="x86"
+ ;;
+ "aarch64")
+ TARGET="aarch64-linux-android"
+ ABI="arm64-v8a"
+ ;;
+ "armv7")
+ TARGET="armv7-linux-androideabi"
+ ABI="armeabi-v7a"
+ ;;
+ esac
+
+ . env.sh "$TARGET"
+ cargo build $CARGO_FLAGS --target "$TARGET" --package mullvad-jni
+
+ cp -a "$SCRIPT_DIR/dist-assets/binaries/$TARGET" "$SCRIPT_DIR/android/build/extraJni/$ABI"
+ cp "$SCRIPT_DIR/target/$TARGET/$BUILD_TYPE/libmullvad_jni.so" "$SCRIPT_DIR/android/build/extraJni/$ABI/"
+done
+
+cd "$SCRIPT_DIR/android"
+./gradlew --console plain "$GRADLE_TASK"
+
+GENERATED_APK="$SCRIPT_DIR/android/build/outputs/apk/$BUILD_TYPE/android-$BUILD_TYPE.apk"
+
+mkdir -p ../dist
+cp "$GENERATED_APK" "$SCRIPT_DIR/dist/MullvadVPN-${APK_VERSION}${APK_SUFFIX}.apk"