def push_apk(<EOL>apks,<EOL>service_account,<EOL>google_play_credentials_file,<EOL>track,<EOL>expected_package_names,<EOL>skip_check_package_names=False,<EOL>google_play_strings=NoGooglePlayStrings(),<EOL>rollout_percentage=None,<EOL>commit=True,<EOL>contact_google_play=True,<EOL>skip_check_ordered_version_codes=False,<EOL>skip_check_multiple_locales=False,<EOL>skip_check_same_locales=False,<EOL>skip_checks_fennec=False,<EOL>):
<EOL>main_logging.init()<EOL>if track == '<STR_LIT>' and rollout_percentage is None:<EOL><INDENT>raise WrongArgumentGiven("<STR_LIT>")<EOL><DEDENT>if rollout_percentage is not None and track != '<STR_LIT>':<EOL><INDENT>raise WrongArgumentGiven("<STR_LIT>")<EOL><DEDENT>apks_metadata_per_paths = extract_and_check_apks_metadata(<EOL>apks,<EOL>expected_package_names,<EOL>skip_check_package_names,<EOL>skip_checks_fennec,<EOL>skip_check_multiple_locales,<EOL>skip_check_same_locales,<EOL>skip_check_ordered_version_codes,<EOL>)<EOL>split_apk_metadata = _split_apk_metadata_per_package_name(apks_metadata_per_paths)<EOL>for (package_name, apks_metadata) in split_apk_metadata.items():<EOL><INDENT>l10n_strings = google_play_strings.get_strings(package_name)<EOL>_upload_apks(<EOL>service_account,<EOL>google_play_credentials_file,<EOL>commit,<EOL>contact_google_play,<EOL>apks_metadata,<EOL>package_name,<EOL>l10n_strings,<EOL>track,<EOL>rollout_percentage,<EOL>)<EOL><DEDENT>
Args:
    apks: list of APK files
    service_account: Google Play service account
    google_play_credentials_file: Credentials file to authenticate to Google Play
    track (str): Google Play track to deploy to (e.g.: "nightly"). If "rollout" is chosen, the parameter
        `rollout_percentage` must be specified as well
    expected_package_names (str): defines what the expected package name must be.
    skip_check_package_names (bool): skip the checked package name check. Raises if `expected_package_names` is truthy,
    rollout_percentage (int): percentage of users to roll out this update to. Must be a number between [0-100].
        This option is only valid if `track` is set to "rollout"
    google_play_strings: Either `NoGooglePlayStrings`, `StoreGooglePlayStrings` or `FileGooglePlayStrings`
    commit (bool): `False` to do a dry-run
    contact_google_play (bool): `False` to avoid communicating with Google Play. Useful if you're using mock
        credentials.
    skip_checks_fennec (bool): skip Fennec-specific checks
    skip_check_same_locales (bool): skip check to ensure all APKs have the same locales
    skip_check_multiple_locales (bool): skip check to ensure all APKs have more than one locale
    skip_check_ordered_version_codes (bool): skip check to ensure that ensures all APKs have different version codes
        and that the x86 version code > the arm version code