From a58bcf7ef8227708dad1501db59bd506e83e5341 Mon Sep 17 00:00:00 2001 From: Hal Canary Date: Mon, 12 Feb 2018 11:21:54 -0500 Subject: 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 Reviewed-by: Derek Sollenberger --- tools/skqp/make_universal_apk | 10 ++++++++++ tools/skqp/remove_unneeded_assets | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100755 tools/skqp/remove_unneeded_assets (limited to 'tools/skqp') diff --git a/tools/skqp/make_universal_apk b/tools/skqp/make_universal_apk index ce0607119c..29c67bd3d9 100755 --- a/tools/skqp/make_universal_apk +++ b/tools/skqp/make_universal_apk @@ -22,6 +22,9 @@ locations of the Android NDK and SDK. Current values: 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 } @@ -37,7 +40,14 @@ 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 diff --git a/tools/skqp/remove_unneeded_assets b/tools/skqp/remove_unneeded_assets new file mode 100755 index 0000000000..67bf9cff03 --- /dev/null +++ b/tools/skqp/remove_unneeded_assets @@ -0,0 +1,34 @@ +#! /usr/bin/env python + +# Copyright 2018 Google Inc. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import shutil +import sys + +def gset(path): + s = set() + if os.path.isfile(path): + with open(path, 'r') as f: + for line in f: + s.add(line.strip()) + return s + +def main(): + assets = os.path.join('platform_tools', 'android', 'apps', 'skqp', 'src', 'main', 'assets') + os.chdir(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, assets)) + known = gset('skqp/KnownGMs.txt') + nope = gset('skqp/DoNotScoreInCompatibilityTestMode.txt') + present = set(os.listdir('gmkb')) + to_delete = present & nope + if (known): + to_delete |= (present - known) + for x in to_delete: + shutil.rmtree(os.path.join('gmkb', x)) + sys.stdout.write('%s: %d of %d models removed\n' %(sys.argv[0], len(to_delete), len(present))) + +if __name__ == '__main__': + main() + -- cgit v1.2.3