Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

모듈 설치 로컬 테스트

Play Core 라이브러리를 사용하면 Play 스토어에 연결하지 않고도 앱이 다음을 실행할 수 있는 기능을 로컬에서 테스트할 수 있습니다.

이 페이지에서는 Play Core에서 앱의 분할 APK를 자동으로 사용하여 Play 스토어에서 모듈의 요청, 다운로드 및 설치를 시뮬레이션할 수 있도록 앱의 분할 APK를 테스트 기기에 배포하는 방법에 관해 설명합니다.

앱의 로직을 변경할 필요는 없지만 다음 요구사항을 충족해야 합니다.

APK 세트 빌드

앱의 분할 APK를 아직 빌드하지 않았다면 다음과 같이 빌드합니다.

  1. 다음 방법 중 하나를 사용하여 앱의 App Bundle을 빌드합니다.
  2. bundletool을 사용하여 다음 명령어로 모든 기기 구성을 위한 APK 세트를 생성합니다.

    bundletool build-apks --local-testing
      --bundle my_app.aab
      --output my_app.apks
    

--local-testing 플래그는 Play 스토어에 연결하지 않고도 Play Core 라이브러리가 로컬 분할 APK를 사용하여 기능 모듈 설치를 테스트하는 것을 알 수 있도록 하는 메타데이터를 APK의 매니페스트에 포함합니다.

기기에 앱 배포

--local-testing 플래그를 사용하여 APK 세트를 빌드한 후 bundletool을 사용하여 앱의 기본 버전을 설치하고 추가 APK를 기기의 로컬 저장소로 전송합니다. 다음 명령어를 사용하여 두 작업을 모두 실행할 수 있습니다.

bundletool install-apks --apks my_app.apks

이제 앱을 시작하고 사용자 플로우를 완료하여 기능 모듈을 다운로드하고 설치할 때 Play Core 라이브러리는 bundletool이 기기의 로컬 저장소로 전송한 APK를 사용합니다.

네트워크 오류 시뮬레이션

Play 스토어에서 모듈 설치를 시뮬레이션하기 위해 Play Core 라이브러리는 FakeSplitInstallManager라는 SplitInstallManager의 대안을 사용하여 모듈을 요청합니다. --local-testing 플래그와 함께 bundletool을 사용해 APK 세트를 빌드하여 테스트 기기에 배포할 때 앱의 API 호출을 자동으로 전환하여 SplitInstallManager 대신 FakeSplitInstallManager를 호출하도록 Play Core 라이브러리에 지시하는 메타데이터가 포함됩니다.

FakeSplitInstallManager에는 다음에 앱이 모듈 설치를 요청할 때 네트워크 오류를 시뮬레이션할 수 있는 부울 플래그가 포함되어 있습니다. 테스트에서 FakeSplitInstallManager에 액세스하려면 아래와 같이 FakeSplitInstallManagerFactory를 사용하여 그 인스턴스를 가져옵니다.

Kotlin

// Creates an instance of FakeSplitInstallManager with the app's context.
val fakeSplitInstallManager = FakeSplitInstallManagerFactory.create(context)
// Tells Play Core Library to force the next module request to
// result in a network error.
fakeSplitInstallManager.setShouldNetworkError(true)

자바

// Creates an instance of FakeSplitInstallManager with the app's context.
FakeSplitInstallManager fakeSplitInstallManager =
    FakeSplitInstallManagerFactory.create(context);
// Tells Play Core Library to force the next module request to
// result in a network error.
fakeSplitInstallManager.setShouldNetworkError(true);