#!/usr/bin/python # # Copyright 2017 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import argparse import os import re import shutil import subprocess import sys parser = argparse.ArgumentParser(description='builds skia android apps') parser.add_argument('-C', '--output_dir', help='ninja out dir') parser.add_argument('--no-daemon', default=False, action='store_true', help='disable gradle daemon') parser.add_argument('app_name') args = parser.parse_args() target_cpu = "arm64" android_buildtype = "debug" if args.output_dir == None: sys.exit("unknown out directory") args_gn_path = os.path.join(args.output_dir, "args.gn") if os.path.exists(args_gn_path): for line in open(args_gn_path): m = re.match('target_cpu *= *"(.*)"', line.strip()) if m: target_cpu = m.group(1) # build the apk using gradle cmd = ['./apps/gradlew', ':' + args.app_name + ':assemble' + target_cpu + android_buildtype, '-papps/' + args.app_name, '-P' + target_cpu + '.out.dir=' + os.path.abspath(args.output_dir)] if not args.no_daemon: cmd += ['--daemon'] try: subprocess.check_call(cmd, cwd=os.path.join(os.path.dirname(__file__), "..")) except subprocess.CalledProcessError as error: print error sys.exit("gradle build failed") # copy apk back into the main out directory current_dir = os.path.dirname(__file__) apk_src = os.path.join(current_dir, "..", "apps", args.app_name, "build", "outputs", "apk", target_cpu, android_buildtype, args.app_name + "-" + target_cpu + "-" + android_buildtype + ".apk") apk_dst = os.path.join(args.output_dir, args.app_name + ".apk") shutil.copyfile(apk_src, apk_dst)