| #!/usr/bin/env bash |
| # Copyright 2014 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Usage: |
| # |
| # ./run_release_test.sh <bundletool.jar path> <adb path> |
| # |
| # In CI, this script currently depends on a modified version of bundletool because |
| # ddmlib which bundletool depends on does not yet support detecting QEMU emulator device |
| # density system properties. See https://android.googlesource.com/platform/tools/base/+/refs/heads/master/ddmlib/src/main/java/com/android/ddmlib/IDevice.java#46 |
| # |
| # The modified bundletool which waives the density requirement is at: |
| # https://chrome-infra-packages.appspot.com/p/flutter/android/bundletool/+/vFt1jA0cUeZLmUCVR5NG2JVB-SgJ18GH_pVYKMOlfUIC |
| |
| bundletool_jar_path=$1 |
| adb_path=$2 |
| |
| # Store the time to prevent capturing logs from previous runs. |
| script_start_time=$($adb_path shell 'date +"%m-%d %H:%M:%S.0"') |
| |
| $adb_path uninstall "io.flutter.integration.deferred_components_test" |
| |
| rm -f build/app/outputs/bundle/release/app-release.apks |
| rm -f build/app/outputs/bundle/release/run_logcat.log |
| |
| flutter build appbundle |
| |
| java -jar $bundletool_jar_path build-apks --bundle=build/app/outputs/bundle/release/app-release.aab --output=build/app/outputs/bundle/release/app-release.apks --local-testing --ks android/testing-keystore.jks --ks-key-alias testing_key --ks-pass pass:012345 |
| java -jar $bundletool_jar_path install-apks --apks=build/app/outputs/bundle/release/app-release.apks |
| |
| $adb_path shell " |
| am start -n io.flutter.integration.deferred_components_test/.MainActivity |
| exit |
| " |
| run_start_time_seconds=$(date +%s) |
| while read LOGLINE |
| do |
| if [[ "${LOGLINE}" == *"Running deferred code"* ]]; then |
| echo "Found ${LOGLINE}" |
| echo "All tests passed." |
| pkill -P $$ |
| exit 0 |
| fi |
| # Timeout if expected log not found |
| current_time=$(date +%s) |
| if [[ $((current_time - run_start_time_seconds)) -ge 300 ]]; then |
| echo "Failure: Timed out, deferred component did not load." |
| pkill -P $$ |
| exit 1 |
| fi |
| done < <($adb_path logcat -T "$script_start_time") |
| |
| echo "Failure: Deferred component did not load." |
| exit 1 |