1#! /usr/bin/env python 2# Copyright 2018 Google LLC. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6''' 7This script can be run with no arguments, in which case it will produce an 8APK with native libraries for all four architectures: arm, arm64, x86, and 9x64. You can instead list the architectures you want as arguments to this 10script. For example: 11 12 python make_universal_apk.py arm x86 13 14The environment variables ANDROID_NDK_HOME and ANDROID_HOME must be set to the 15locations of the Android NDK and SDK. 16 17Additionally, `ninja` should be in your path. 18 19It assumes that the source tree is in the desired state, e.g. by having 20run 'python tools/git-sync-deps' in the root of the skia checkout. 21 22Also: 23 * If the environment variable SKQP_BUILD_DIR is set, many of the 24 intermediate build objects will be placed here. 25 * If the environment variable SKQP_OUTPUT_DIR is set, the final APK 26 will be placed in this directory. 27 * If the environment variable SKQP_DEBUG is set, Skia will be compiled 28 in debug mode. 29''' 30 31import os 32import sys 33 34import create_apk 35 36def make_apk(opts): 37 assert '/' in [os.sep, os.altsep] # 'a/b' over os.path.join('a', 'b') 38 39 skia_dir = os.path.dirname(__file__) + '/../..' 40 create_apk.makedirs(opts.build_dir) 41 assets_dir = skia_dir + '/platform_tools/android/apps/skqp/src/main/assets' 42 resources_path = assets_dir + '/resources' 43 44 with create_apk.RemoveFiles(resources_path): # always clean up 45 create_apk.remove(resources_path) 46 os.symlink('../../../../../../../resources', resources_path) 47 48 create_apk.create_apk(opts) 49 50def main(): 51 options = create_apk.SkQP_Build_Options() 52 if options.error: 53 sys.stderr.write(options.error + __doc__) 54 sys.exit(1) 55 options.write(sys.stdout) 56 make_apk(options) 57 58if __name__ == '__main__': 59 main() 60