Play Core 라이브러리를 사용하면 Play 스토어에 연결하지 않고도 앱이 다음을 실행할 수 있는 기능을 로컬에서 테스트할 수 있습니다.
- 모듈 설치 요청 및 모니터링
- 설치 오류 처리
SplitCompat
을 사용하여 모듈에 액세스
이 페이지에서는 Play Core에서 앱의 분할 APK를 자동으로 사용하여 Play 스토어에서 모듈의 요청, 다운로드 및 설치를 시뮬레이션할 수 있도록 앱의 분할 APK를 테스트 기기에 배포하는 방법에 관해 설명합니다.
앱의 로직을 변경할 필요는 없지만 다음 요구사항을 충족해야 합니다.
- 최신 버전의
bundletool
을 다운로드하여 설치합니다. 앱의 번들에서 설치 가능한 새 APK 세트를 빌드하려면bundletool
이 필요합니다. - 앱이 Play Core 1.7.2 이상을 사용 중인지 확인합니다. 자세한 내용은 프로젝트에 Play Core 라이브러리 포함을 참조하세요.
APK 세트 빌드
앱의 분할 APK를 아직 빌드하지 않았다면 다음과 같이 빌드합니다.
- 다음 방법 중 하나를 사용하여 앱의 App Bundle을 빌드합니다.
- Android 스튜디오 및 Gradle용 Android 플러그인을 사용하여 Android App Bundle을 빌드하고 서명합니다.
- 명령줄에서 App Bundle을 빌드합니다.
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);