skia2/tools/skqp/make_universal_apk
Hal Canary a58bcf7ef8 SkQP: Slimmer APKS
Currently produces 30% smaller APKs.

No-Try: true
Change-Id: Ic04b4bebef78e9a3f8b8dde4bace78ce74e43d66
Reviewed-on: https://skia-review.googlesource.com/106165
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2018-02-12 17:05:22 +00:00

88 lines
2.2 KiB
Bash
Executable File

#! /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.
If SKQP_EXTRA_MODELS is non-empty, assets unneeded by the CTS tests will be
included for experimental mode.
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")/../.."
git clean -fxd platform_tools/android/apps/skqp
python tools/skqp/download_model
if [ -z "$SKQP_EXTRA_MODELS" ]; then
python tools/skqp/remove_unneeded_assets
fi
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/