| Index: build/android/gyp/apk_install.py
|
| diff --git a/build/android/gyp/apk_install.py b/build/android/gyp/apk_install.py
|
| index ef10c6a3bd695403c8d661460f8e3a38d5ee930e..f0ed973a3085f1a8b8d3d5bfd767000d5f8e8f90 100755
|
| --- a/build/android/gyp/apk_install.py
|
| +++ b/build/android/gyp/apk_install.py
|
| @@ -14,20 +14,18 @@ import re
|
| import subprocess
|
| import sys
|
|
|
| +from util import build_device
|
| from util import build_utils
|
| from util import md5_check
|
|
|
| BUILD_ANDROID_DIR = os.path.join(os.path.dirname(__file__), '..')
|
| sys.path.append(BUILD_ANDROID_DIR)
|
|
|
| -from pylib import android_commands
|
| from pylib.utils import apk_helper
|
|
|
| -
|
| -def GetMetadata(apk_package):
|
| +def GetNewMetadata(device, apk_package):
|
| """Gets the metadata on the device for the apk_package apk."""
|
| - adb = android_commands.AndroidCommands()
|
| - output = adb.RunShellCommand('ls -l /data/app/')
|
| + output = device.RunShellCommand('ls -l /data/app/')
|
| # Matches lines like:
|
| # -rw-r--r-- system system 7376582 2013-04-19 16:34 org.chromium.chrome.testshell.apk
|
| # -rw-r--r-- system system 7376582 2013-04-19 16:34 org.chromium.chrome.testshell-1.apk
|
| @@ -35,23 +33,19 @@ def GetMetadata(apk_package):
|
| matches = filter(apk_matcher, output)
|
| return matches[0] if matches else None
|
|
|
| -
|
| -def HasInstallMetadataChanged(apk_package, metadata_path):
|
| +def HasInstallMetadataChanged(device, apk_package, metadata_path):
|
| """Checks if the metadata on the device for apk_package has changed."""
|
| if not os.path.exists(metadata_path):
|
| return True
|
|
|
| with open(metadata_path, 'r') as expected_file:
|
| - return expected_file.read() != GetMetadata(apk_package)
|
| + return expected_file.read() != device.GetInstallMetadata(apk_package)
|
|
|
|
|
| -def RecordInstallMetadata(apk_package, metadata_path):
|
| +def RecordInstallMetadata(device, apk_package, metadata_path):
|
| """Records the metadata from the device for apk_package."""
|
| - metadata = GetMetadata(apk_package)
|
| + metadata = GetNewMetadata(device, apk_package)
|
| if not metadata:
|
| - if not android_commands.AndroidCommands().IsRootEnabled():
|
| - raise Exception('APK install failed unexpectedly -- root not enabled on '
|
| - 'the device (run adb root).')
|
| raise Exception('APK install failed unexpectedly.')
|
|
|
| with open(metadata_path, 'w') as outfile:
|
| @@ -59,11 +53,6 @@ def RecordInstallMetadata(apk_package, metadata_path):
|
|
|
|
|
| def main(argv):
|
| - if not build_utils.IsDeviceReady():
|
| - build_utils.PrintBigWarning(
|
| - 'Zero (or multiple) devices attached. Skipping APK install.')
|
| - return
|
| -
|
| parser = optparse.OptionParser()
|
| parser.add_option('--android-sdk-tools',
|
| help='Path to Android SDK tools.')
|
| @@ -71,28 +60,29 @@ def main(argv):
|
| help='Path to .apk to install.')
|
| parser.add_option('--install-record',
|
| help='Path to install record (touched only when APK is installed).')
|
| + parser.add_option('--build-device-configuration',
|
| + help='Path to build device configuration.')
|
| parser.add_option('--stamp',
|
| help='Path to touch on success.')
|
| options, _ = parser.parse_args()
|
|
|
| - # TODO(cjhopman): Should this install to all devices/be configurable?
|
| - install_cmd = [
|
| - os.path.join(options.android_sdk_tools, 'adb'),
|
| - 'install', '-r',
|
| - options.apk_path]
|
| + device = build_device.GetBuildDeviceFromPath(
|
| + options.build_device_configuration)
|
| + if not device:
|
| + return
|
|
|
| - serial_number = android_commands.AndroidCommands().Adb().GetSerialNumber()
|
| + serial_number = device.GetSerialNumber()
|
| apk_package = apk_helper.GetPackageName(options.apk_path)
|
|
|
| metadata_path = '%s.%s.device.time.stamp' % (options.apk_path, serial_number)
|
|
|
| # If the APK on the device does not match the one that was last installed by
|
| # the build, then the APK has to be installed (regardless of the md5 record).
|
| - force_install = HasInstallMetadataChanged(apk_package, metadata_path)
|
| + force_install = HasInstallMetadataChanged(device, apk_package, metadata_path)
|
|
|
| def Install():
|
| - build_utils.CheckCallDie(install_cmd)
|
| - RecordInstallMetadata(apk_package, metadata_path)
|
| + device.Install(options.apk_path, reinstall=True)
|
| + RecordInstallMetadata(device, apk_package, metadata_path)
|
| build_utils.Touch(options.install_record)
|
|
|
|
|
| @@ -101,7 +91,6 @@ def main(argv):
|
| Install,
|
| record_path=record_path,
|
| input_paths=[options.apk_path],
|
| - input_strings=install_cmd,
|
| force=force_install)
|
|
|
| if options.stamp:
|
|
|