aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2018-02-07 14:56:29 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-09 22:13:23 +0000
commitc87fbf93d0c9329a1f14da55aa96a27547ae0df6 (patch)
tree790c77e4d89c4d15dffd09bd15e01a0403a04faf /tools
parent7fcfb621998648ba018e3b89e2cab3135bd46a1f (diff)
Android Tools: build x86_64 correctly.
- Fix some naming confusion between `x64` and `x86-64`. - SkQP Universal (multi-arch apk) Build Script [tools/skqp/make_universal_apk] - skqp/build.gradle: add `universal` product flavor - skqp manifest: make debug build optional. No-Try: true Change-Id: Ic8cd88719a34786ab2d53771749b2beb9db98be5 Reviewed-on: https://skia-review.googlesource.com/105023 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Stephan Altmueller <stephana@google.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/skqp/make_universal_apk77
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/skqp/make_universal_apk b/tools/skqp/make_universal_apk
new file mode 100755
index 0000000000..ce0607119c
--- /dev/null
+++ b/tools/skqp/make_universal_apk
@@ -0,0 +1,77 @@
+#! /bin/sh
+
+# Copyright 2018 Google Inc.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+usage() {
+ cat >&2 <<EOM
+
+This script can be run with no arguments, in which case it will produce an
+APK with native libraries for all four architectures: arm, arm64, x86, and
+x64. You can instead list the architectures you want as arguments to this
+script. For example:
+
+ $0 arm x86
+
+The environment variables ANDROID_NDK and ANDROID_HOME must be set to the
+locations of the Android NDK and SDK. Current values:
+
+ ANDROID_NDK="$ANDROID_NDK"
+ ANDROID_HOME="$ANDROID_HOME"
+
+Additionally, \`python\` and \`ninja\` should be in your path.
+
+EOM
+ exit 1
+}
+
+[ -d "$ANDROID_NDK" ] || usage
+[ -d "$ANDROID_HOME" ] || usage
+command -v ninja > /dev/null || usage
+command -v python > /dev/null || usage
+for ARCH in $*; do case $ARCH in arm|arm64|x86|x64);; *) usage;; esac; done
+
+set -x # Verbose
+set -e # Exit immediately
+
+cd "$(dirname "$0")/../.."
+
+python tools/skqp/download_model
+python tools/skqp/setup_resources
+python tools/git-sync-deps
+
+APP=skqp
+LIB=libskqp_app.so
+
+find platform_tools/android/apps/$APP -name $LIB -exec rm {} +
+
+if [ $# -eq 0 ]; then
+ set -- arm arm64 x86 x64
+fi
+
+for ARCH in $*; do
+ BUILD=out/skqp-$ARCH
+ python tools/skqp/generate_gn_args $BUILD "$ANDROID_NDK" --arch "$ARCH"
+ bin/gn gen $BUILD
+ ninja -C $BUILD $LIB
+ case $ARCH in
+ arm) NATIVE=armeabi-v7a ;;
+ arm64) NATIVE=arm64-v8a ;;
+ x86) NATIVE=x86 ;;
+ x64) NATIVE=x86_64 ;;
+ *) usage ;;
+ esac
+ DST=platform_tools/android/apps/$APP/src/main/libs/$NATIVE
+ mkdir -p $DST
+ cp -a $BUILD/$LIB $DST/$LIB
+done
+
+(
+ cd platform_tools/android
+ apps/gradlew --daemon -p apps/$APP -P suppressNativeBuild :$APP:assembleUniversalDebug
+)
+
+mkdir -p out/skqp
+cp platform_tools/android/apps/$APP/build/outputs/apk/$APP-universal-debug.apk out/skqp/
+