| #!/usr/bin/env python |
| # Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
| # |
| # Use of this source code is governed by a BSD-style license |
| # that can be found in the LICENSE file in the root of the source |
| # tree. An additional intellectual property rights grant can be found |
| # in the file PATENTS. All contributing project authors may |
| # be found in the AUTHORS file in the root of the source tree. |
| |
| """ |
| This scripts tests creating an Android Studio project using the |
| generate_gradle.py script and making a debug build using it. |
| |
| It expect to be given the webrtc output build directory as the first argument |
| all other arguments are optional. |
| """ |
| |
| import argparse |
| import logging |
| import os |
| import shutil |
| import subprocess |
| import sys |
| import tempfile |
| |
| |
| SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir)) |
| GENERATE_GRADLE_SCRIPT = os.path.join(SRC_DIR, |
| 'build/android/gradle/generate_gradle.py') |
| GRADLEW_BIN = os.path.join(SCRIPT_DIR, 'third_party/gradle/gradlew') |
| |
| |
| def _RunCommand(argv, cwd=SRC_DIR, **kwargs): |
| logging.info('Running %r', argv) |
| subprocess.check_call(argv, cwd=cwd, **kwargs) |
| |
| |
| def _ParseArgs(): |
| parser = argparse.ArgumentParser( |
| description='Test generating Android gradle project.') |
| parser.add_argument('build_dir_android', |
| help='The path to the build directory for Android.') |
| parser.add_argument('--project_dir', |
| help='A temporary directory to put the output.') |
| |
| args = parser.parse_args() |
| return args |
| |
| |
| def main(): |
| logging.basicConfig(level=logging.INFO) |
| args = _ParseArgs() |
| |
| project_dir = args.project_dir |
| if not project_dir: |
| project_dir = tempfile.mkdtemp() |
| |
| output_dir = os.path.abspath(args.build_dir_android) |
| project_dir = os.path.abspath(project_dir) |
| |
| try: |
| env = os.environ.copy() |
| env['PATH'] = os.pathsep.join([ |
| os.path.join(SRC_DIR, 'third_party', 'depot_tools'), env.get('PATH', '') |
| ]) |
| _RunCommand([GENERATE_GRADLE_SCRIPT, '--output-directory', output_dir, |
| '--target', '//examples:AppRTCMobile', |
| '--project-dir', project_dir, |
| '--use-gradle-process-resources', '--split-projects'], |
| env=env) |
| _RunCommand([GRADLEW_BIN, 'assembleDebug'], project_dir) |
| finally: |
| # Do not delete temporary directory if user specified it manually. |
| if not args.project_dir: |
| shutil.rmtree(project_dir, True) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |