diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-15 21:45:57 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-18 15:57:19 +0000 |
| commit | 4897b4d7d16bc02186582742a8866f5e8e6571bd (patch) | |
| tree | ddd97f35441f2fc1c6e1b6212e7b66be030067ce | |
| parent | 193a616bfb31dd38264f0bfbcd7ec5006dbe7979 (diff) | |
| download | mullvadvpn-4897b4d7d16bc02186582742a8866f5e8e6571bd.tar.xz mullvadvpn-4897b4d7d16bc02186582742a8866f5e8e6571bd.zip | |
Create helper script to build app for Android
| -rw-r--r-- | android/build.gradle | 17 | ||||
| -rwxr-xr-x | build-apk.sh | 76 |
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" |
