Firebase에서 Dev 및 프로덕션 환경으로 Tow 프로젝트를 작성하십시오.
https://firebase.google.com/docs/android/setup 또는 Crashlytics의 경우 https://firebase.google.com/docs/crashlytics/get-started?platform=android에 따라 SDK를 설정 하십시오.
먼저 각 buildType에 대해 각각의 google_services.json을 다음 위치에 배치하십시오.
app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json
참고 : 루트 app / google_services.json이 파일은 빌드 변형에 따라 루트 json 파일의 json 코드를 복사해야합니다.
이제 적절한 google_services.json을 app / google_services.json으로 이동하는 자동화를위한 앱의 build.gradle에서 몇 가지 gradle 작업을 수행하십시오.
이것을 app / Gradle 파일에 복사하십시오
task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}
task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}
훌륭하지만 앱을 빌드하기 전에 이러한 작업을 수동으로 실행해야하는 것은 번거 롭습니다. assembleDebug 또는 : assembleRelease가 실행되기 전에 언젠가 위의 적절한 복사 작업을 실행하고 싶습니다. : assembleRelease가 실행될 때 어떤 일이 발생하는지 보자 : 이것을 / gradlew 파일에 복사
Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease
: app : processReleaseGoogleServices 작업을 확인하십시오. 이 작업은 루트 google_services.json 파일을 처리합니다. 올바른 google_services.json을 처리하려면 즉시 복사 작업을 실행해야합니다. 이것을 build.gradle에 추가하십시오. afterEvaluate 엔 클로징에 유의하십시오.
이것을 app / Gradle 파일에 복사하십시오
afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}
이제 : app : processReleaseGoogleServices가 호출되면 새로 정의 된 : app : switchToRelease가 미리 호출됩니다. 디버그 buildType에 대해 동일한 논리입니다. : app : assembleRelease를 실행하면 출시 버전 google_services.json이 자동으로 앱 모듈의 루트 폴더에 복사됩니다.