[android] 패키지 이름 (Google Analytics)과 일치하는 클라이언트를 찾을 수 없습니다.-여러 개의 ProductFlavors 및 buildTypes

문맥:

앱에 Google 웹 로그 분석을 설정하려고합니다. (4 사용자 정의 buildTypes및 몇 가지 이상 productFlavors)

로 설정 Build Variant한 것을 선택하면 제대로 작동합니다 (을 생성 할 때 사용 된 패키지 이름 ). 그러나 다른 풍미에는 다른 applicationId가 있습니다.applicationIdcom.my.app.package.namegoogle-services.json

나는 공식적인 지침 을 따라 설정했다.

Build Variants Tab(다른 applicationId(패키지 이름) 을 가진 다른 빌드 변형을 선택할 때 발생하는 오류 는 다음과 같습니다.

오류 : ‘: app : processAllcategoriesDebugfreeGoogleServices’작업에 대한 실행이 실패했습니다.

패키지 이름 ‘com.my.app.package.name.debug’와 일치하는 클라이언트가 없습니다.

오류 메시지 설명 :

오류 메시지에서 작업 이름에서 위의 Debugfree내 관습 buildTypeAllcategories내 중 하나입니다 productFlavors.

나는 오류를 이해하고 패키지 이름이 json을 생성 할 때 사용한 것과 다르다는 것을 알고 있지만 그 방법을 알아 내려고 노력하고 있습니다.

문제:

이제는 폴더에 google-services.json상주 app하므로 플레이버 특정 소스 세트 폴더에 드롭하여 각 제품 플레이버마다 분리 할 수 ​​없습니다.

질문 :

  1. byildType접미사 .debugapplicationId(패키지 이름)으로 디버깅하는 사용자 정의 . google-services.json내 릴리스가있는 applicationId(예 : 접미사가없는 .debug) 작업을 수행 할 수있는 방법이 있습니까?
  2. google-services.json필요한 파일을 app폴더 로 복사하기 위해 별도의 파일과 작업을 사용하지 않고 동일한 파일 에 여러 제품 버전을 구성 할 수있는 방법이 있습니까? 이 게시물task 에서 언급 한대로 사용할 수 있습니다 . 하나의 파일을 가지고 있거나 gradle 구성에 따라 올바른 파일을 선택하는 간단한 방법이 있습니까?
  3. 나는 참조 package_name필드에이 google-services.json패키지 이름이 com.my.app.package.name. 모든 빌드 변형에서 작동하도록 여러 패키지 이름을 수동으로 추가 할 수 있습니까? 그렇다면 어떻게해야합니까? 설명서에서 지침을 찾을 수 없습니다.


답변

google-services.json 에서 패키지 이름을 확인하고 앱의 로컬 패키지 이름과 같아야합니다.

"client_info": {
    "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
    "android_client_info": {
      "package_name": "com.my.app.package.name"
    }

이 경우 내 로컬 패키지 이름은 com.my.app.package.name 이므로 google-services.json 에서 내 로컬 패키지 이름으로 패키지 이름을 변경했습니다.


답변

이것을 찾았습니다 :

google-services.json 파일은 일반적으로 app / 디렉토리에 있지만 버전 2.0.0-alpha3부터 빌드 유형에 대한 플러그인 지원이 추가 되어 다음 디렉토리 구조가 유효합니다.

app/src/
    main/google-services.json
    dogfood/google-services.json
    mytype1/google-services.json
    ...

출처

소스 2


답변

패키지 이름 ‘com.tf’와 일치하는 클라이언트를 찾을 수 없습니다.
google-services.json의 “package_name”이 앱 gradle의 “applicationId”와 일치하지 않습니다.

앱 gradle :

defaultConfig {
        applicationId "com.tf" //replace with the package_name in google-services.json =
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

google-services.json

"client_info": {
        "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
        "android_client_info": {
          "package_name": "in.ac.geu.debug"
        }
      },

해결 방법 : package_nameapplicationId반드시 같아야합니다.


답변

“google-services.json”파일의 패키지 이름이 앱의 패키지 이름과 동일한 지 확인하십시오.


답변

해결책을 찾았습니다.

firebase 프로젝트에서 두 개의 “앱”을 생성 한 다음 하나의 앱에서 json 파일을 다운로드 할 수 있습니다 (flavored 앱에서 다운로드). 두 앱 모두에 대한 데이터를 포함합니다. json 파일을 앱의 루트 디렉토리에 간단히 복사 할 수 있습니다.

출처 : https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html


답변

당신은 장소에 필요 google-services.jsonapp/말 일세. 그리고 각 빌드 유형마다 app/src폴더에 일치하는 디렉터가 있어야
합니다.

예를 들어 릴리스 및 디버그가있는 경우 :

app/google-services.json
app/src/debug/google-services.json

모든 google-services.json 파일 package_name에서 빌드 유형에 따라 올바른 것을 지정해야 합니다.

예를 들어, 디버그 디렉토리 안에는 {com.myapp}.debug


답변

이 오류는 패키지 이름 이 프로젝트의 패키지 이름과 일치하지 않는 프로젝트에 Google Services Json 파일을 다운로드 한 경우 발생합니다. .

최근에 프로젝트의 패키지 이름을 바꿨습니까?

Gradle File이 아닌 모든 클래스를 업데이트합니다 . 따라서 Gradle에서 패키지 이름이 올바른지 확인하고 매니페스트도 확인하십시오.