Home | History | Annotate | Download | only in bin
      1 #!/usr/bin/python
      2 #
      3 # Copyright 2017 Google Inc.
      4 #
      5 # Use of this source code is governed by a BSD-style license that can be
      6 # found in the LICENSE file.
      7 
      8 import argparse
      9 import os
     10 import re
     11 import shutil
     12 import subprocess
     13 import sys
     14 
     15 parser = argparse.ArgumentParser(description='builds skia android apps')
     16 parser.add_argument('-C', '--output_dir', help='ninja out dir')
     17 parser.add_argument('app_name')
     18 
     19 args = parser.parse_args()
     20 
     21 target_cpu = "arm64"
     22 android_buildtype = "debug"
     23 
     24 if args.output_dir == None:
     25   sys.exit("unknown out directory")
     26 
     27 args_gn_path = os.path.join(args.output_dir, "args.gn")
     28 if os.path.exists(args_gn_path):
     29   for line in open(args_gn_path):
     30     m = re.match('target_cpu *= *"(.*)"', line.strip())
     31     if m:
     32       target_cpu = m.group(1)
     33 
     34 # build the apk using gradle
     35 try:
     36     subprocess.check_call(['./apps/gradlew',
     37       ':' + args.app_name + ':assemble' + target_cpu + android_buildtype,
     38       '-papps/' + args.app_name,
     39       '-P' + target_cpu + '.out.dir=' + os.path.abspath(args.output_dir),
     40       '--daemon'], cwd=os.path.join(os.path.dirname(__file__), ".."))
     41 except subprocess.CalledProcessError as error:
     42   print error
     43   sys.exit("gradle build failed")
     44 
     45 # copy apk back into the main out directory
     46 current_dir = os.path.dirname(__file__)
     47 apk_src = os.path.join(current_dir, "..", "apps", args.app_name, "build", "outputs", "apk",
     48                        args.app_name + "-"  + target_cpu + "-"  + android_buildtype + ".apk")
     49 apk_dst = os.path.join(args.output_dir, args.app_name + ".apk")
     50 shutil.copyfile(apk_src, apk_dst)
     51