IT

Firebase 2.0 - 안드로이드 앱의 여러 가지 맛(환경)을 다루는 방법은 무엇입니까?

itgroup 2023. 6. 22. 21:41
반응형

Firebase 2.0 - 안드로이드 앱의 여러 가지 맛(환경)을 다루는 방법은 무엇입니까?

제 앱에는 여러 가지 맛이 있습니다.이 서버 측을 어떻게 설정해야 합니까?내 패키지 이름:

com.example.app(생산)com.example.app.staging(계속)com.example.app.fake(가짜)

파이어베이스 콘솔에 3개의 개별 프로젝트가 있어야 합니까?

주로 프로젝트가 어떻게 작동하기를 원하는지에 따라 달라집니다.세 가지를 모두 동일한 콘솔에 설정하거나 두 개 이상의 서로 다른 프로젝트로 설정할 수 있습니다.두 옵션 중 하나가 유효합니다.

동일한 프로젝트의 이점:

  • 동일한 청구, 할당량, 권한 및 서비스(데이터베이스, 스토리지, FCM 등)를 공유합니다.
  • 생산과 동일한 환경.

다양한 프로젝트의 이점:

  • 프로덕션 데이터를 덮어쓰거나 프로덕션 사용자에게 영향을 미칠 위험이 없습니다.

여러 프로젝트를 사용하는 경우, 다양한 빌드 유형 지원을 활용할 수 있습니다.google-services.json여러 버전의 파일.하나의 프로젝트를 사용하는 경우 동일google-services.json모든 종류에 효과가 있을 것입니다.

참고: CodyMace가 댓글에서 말했듯이 - 앱을 추가할 때마다 JSON 파일을 다시 다운로드해야 합니다!

두 경우 모두 위험을 최소화하기 위해 할 수 있는 일이 있습니다(예: 데이터베이스에 dev/stage/prod/key가 있고 그 아래에 유사한 구조가 있습니다). 하지만 여러분에게 이해가 되는 것은 대체로 트레이드오프에 관한 것입니다.

처음 시작하는 경우에는 개발 중인 동안 하나의 프로젝트로 시작하고, 일단 시작한 후에는 개발 환경을 별도의 프로젝트로 이동하는 것을 고려해 보는 것이 좋습니다.준비는 어느 쪽이든 가능합니다.

참고 아직 완전히 시도하지는 않았지만, 사용할 때까지 잃어버리지 않도록 여기에 문서화합니다.

실제로 그라들 플러그인을 사용하지 않아도 됩니다. 이 플러그인을 사용하면 모든 맛과 빌드 유형에 대한 파이어베이스 프로젝트를 수행할 수 있습니다.

이 문서는 제대로 문서화되지 않았지만 FirebaseApp 설명서 상단 및 기타 정보는 https://firebase.google.com/docs/configure/ 에서 찾을 수 있습니다.

또는 앱 초기화(Context, Firebase Options)를 통해 기본 앱 인스턴스를 초기화합니다.응용 프로그램에서 이 메서드를 호출해야 합니다.응용프로그램의 기본 프로세스 외부에서 사용되는 경우에도 필요합니다.

그래서, 그것을 가져오세요.google-services.json여느 때와 마찬가지로mobilesdk_app_id그리고.current_key(아래)api_key입니다.), Google Analytics에서 확인할 수 있습니다.을 실행합니다.Application필요한 변형에 대한 하위 클래스:

FirebaseOptions options = new FirebaseOptions.Builder()
  .setProjectId("<project_id>")
  .setApplicationId("<mobilesdk_app_id>")
  .setApiKey("<current_key>")
  .build();
FirebaseApp.initializeApp(this, options);

사용되지 않는 솔루션 편집

다른 파이어베이스 백엔드에 대해 Google-services.json을 사용하는 방법이 궁금한 경우 먼저 다음과 같은 별도의 폴더에 모든 관련 json 파일을 배치합니다.

...src/dev/google-services.json ...src/google-services.json

빌드 작업이 실행 중인 경우 앱 수준 Gradle 파일의 맛에 따라 루트로 파일을 이동해야 합니다.

다음과 같이:

android{
...
    def flavourName = getCurrentFlavor()
        delete 'google-services.json'
        clean
        if (flavourName == "development") {
            copy {
                from 'src/dev/'
                include '*.json'
                into '.'
            }
        } else if (flavourName == "stagging") {
            copy {
                from 'src/dev/'
                include '*.json'
                into '.'
            }
        } else if (flavourName == "production") {
            copy {
                from 'src/prod/'
                include '*.json'
                into '.'
            }
        } else {
            println("NA")
        }

}

here getCurrentFlavor()는 -> 로 정의됩니다.

def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

    Pattern pattern
    println tskReqStr

    if (tskReqStr.contains("assemble"))
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher(tskReqStr)

    if (matcher.find())
        return matcher.group(1).toLowerCase()
    else {
        println "NO MATCH FOUND"
        return ""
    }
}

언급URL : https://stackoverflow.com/questions/37463092/firebase-2-0-how-to-deal-with-multiple-flavors-environments-of-an-android-ap

반응형