패키지 이름과 일치하는 클라이언트를 찾을 수 없습니다 (Google Analytics)-여러 productFlavors & buildTypes
문맥:
앱에 Google 웹 로그 분석을 설정하려고합니다. (4 사용자 정의 buildTypes
및 몇 가지 이상 productFlavors
)
로 설정 Build Variant
한 것을 선택하면 제대로 작동합니다 (을 생성 할 때 사용 된 패키지 이름 ). 그러나 다른 풍미에는 다른 applicationId가 있습니다.applicationId
com.my.app.package.name
google-services.json
나는 공식적인 지침 을 따라 설정했다.
Build Variants Tab
(다른 applicationId
(패키지 이름) 을 가진 다른 빌드 변형을 선택할 때 발생하는 오류 는 다음과 같습니다.
오류 : ': app : processAllcategoriesDebugfreeGoogleServices'작업에 대한 실행이 실패했습니다.
패키지 이름 'com.my.app.package.name.debug'와 일치하는 클라이언트가 없습니다.
오류 메시지 설명 :
오류 메시지에서 작업 이름에서 위의 Debugfree
내 관습 buildType
과 Allcategories
내 중 하나입니다 productFlavors
.
나는 오류를 이해하고 패키지 이름이 json을 생성 할 때 사용한 것과 다르지만 그 방법을 알아 내려고 노력하고 있습니다.
문제:
이제는 폴더에 google-services.json
상주 app
하므로 플레이버 특정 소스 세트 폴더에 드롭하여 각 제품 플레이버별로 분리 할 수 없습니다.
질문 :
byildType
접미사.debug
를applicationId
(패키지 이름)으로 디버깅하는 사용자 정의 .google-services.json
내 릴리스가있는applicationId
(예 : 접미사가없는.debug
) 작업을 수행 할 수있는 방법이 있습니까?google-services.json
필요한 파일을app
폴더 로 복사하기 위해 별도의 파일과 작업을 사용하지 않고 동일한 파일 에 여러 제품 버전을 구성 할 수있는 방법이 있습니까? 이 게시물task
에서 언급 한대로 사용할 수 있습니다 . 하나의 파일을 가지고 있거나 gradle 구성에 따라 올바른 파일을 선택하는 간단한 방법이 있습니까?- 나는 참조
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 ...
"google-services.json"파일의 패키지 이름이 앱의 패키지 이름과 동일한 지 확인하십시오.
해결책을 찾았습니다.
firebase 프로젝트에서 두 개의 "앱"을 생성 한 다음 하나의 앱에서 json 파일을 다운로드 할 수 있습니다 (flavored 앱에서 다운로드). 두 앱 모두에 대한 데이터를 포함합니다. json 파일을 앱의 루트 디렉토리에 간단히 복사 할 수 있습니다.
출처 : https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
패키지 이름 '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_name
과 applicationId
반드시 같아야합니다.
package name
패키지 를 만들거나 업데이트 할 때마다 패키지 이름이 정확히 동일한 지 확인하십시오 ( 대소 문자)
아래 단계를 수행하십시오.
1). applicationId
앱 레벨 gradle
파일 체크인
2). 파일을 확인 package_name
하고google-services.json
삼). 확인 package
귀하의 AndroidManifest
파일
전체 확인을 위해 작업 패키지 디렉토리 이름 ie ( "com.example.app") 도 동일 하게 만드십시오 .
당신은 장소에 필요 google-services.json
로 app/
말 일세. 그리고 각 빌드 유형마다 app/src
폴더에 일치하는 디렉터가 있어야 합니다.
예를 들어 릴리스 및 디버그가있는 경우 :
app/google-services.json
app/src/debug/google-services.json
모든 google-services.json 파일 package_name
에서 빌드 유형에 따라 올바른 것을 지정해야 합니다.
예를 들어, 디버그 디렉토리 안에는 {com.myapp}.debug
Google-services.json 파일을 열고 파일에서이 섹션을 찾으십시오.
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
"android_client_info": {
"package_name": "com.example.duke_davis.project"
}
}
패키지가 패키지 이름과 같은지 확인하십시오. 광산은 달랐기 때문에 바꾸었고 효과가있었습니다.
있는지 확인 client_id
하고 package_name
에 구글 - services.json는 패키지 이름에 따라 올바른 값을가집니다.
언급 된 파일을 client_id
and package_name
필드 에 해당 패키지 이름으로 flavors 디렉토리에 추가해야 합니다.
패키지 이름을 바꾼 후 gradle 파일에서 ApplicationId의 이름을 바꾸십시오.
먼저 Gradle의 응용 프로그램 패키지에 접미사를 추가하십시오.
yourFlavor {
applicationIdSuffix "yourFlavor"
}
패키지 이름이 지정됩니다
com.domain.yourapp.yourFlavor
그런 다음 현재 프로젝트에서 Firebase로 이동 하여이 패키지 이름으로 다른 안드로이드 앱을 추가하십시오.
그런 다음 기존 google-services.json 파일을 새 앱으로 생성 한 새 파일로 바꿉니다.
그런 다음 "client_info"섹션이 여러 개 있습니다. 따라서 다음과 같이 끝내야합니다.
"client_info": {
"mobilesdk_app_id": "YOUR APP INFO",
"android_client_info": {
"package_name": "com.domain.yourapp"
}
}
"client_info": {
"mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
"android_client_info": {
"package_name": "com.domain.yourapp.yourFlavor"
}
}
나는 반응 네이티브 출신이지만 이것이 이것이이 질문에도 적용된다고 생각합니다. 지정합니다.
파일 내에서 android/app/build.gradle
검색 applicationId
(내 android
, defaultConfig
)
그 가치가 이것과 같아야합니다
client[0]client_info.android_client_info.package_name
내의 값으로 google-services.json
.
또한 google-services.json 에서 패키지 이름을 변경해야 합니다.
Google-services.json 파일의 패키지 이름이 정상이면 gradle.properties 파일로 이동하십시오. 그런 다음 APPLICATION_ID = "com.yourpackage.name"을 변경하십시오.
1.Verify 패키지 이름 및 응용 프로그램 ID는 동일해야합니다
2. 앱 폴더에서 사용 가능한 google-services.json 패키지 이름 을 확인하십시오.
이 오류는 패키지 이름이 프로젝트의 패키지 이름과 일치하지 않는 프로젝트에 Google Services Json 파일을 다운로드 한 경우 발생합니다.
최근에 프로젝트의 패키지 이름을 바꿨습니까? Gradle File이 아닌 모든 클래스를 업데이트합니다 . 따라서 Gradle에서 패키지 이름이 올바른지 확인하고 매니페스트도 확인하십시오.
새 파일에 firebase json 파일 "google-services".json을 추가했다고 생각합니다. 새 파일 을 만들어야합니다 firebase에서 json 파일을 만드는 방법에 대한 링크를 확인하고 패키지 이름과 일치해야합니다
두 번째로, 패키지 이름을 변경하는 경우 드롭 다운에서 프로젝트를 선택할 때 파일 아래에서 마우스 오른쪽 버튼을 클릭하면 "경로에서 바꾸기"옵션을 사용하십시오. 전체 프로젝트에서 패키지 이름을 검색하고 바꿔야합니다!
도움이 되었기를 바랍니다 !
그것 중 어느 것도 당신들 중 누구에게도 효과가 없다면, 내 문제는 'com'으로 시작하지 않은 패키지 이름에 관한 것입니다. 그것을 변경, 지금 작동합니다.
희망이 도움이
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.package.name"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Gradle.app의 applicationId가 패키지 이름과 동일한 지 확인하십시오. 내 문제는 이것이고 나는 이렇게 해결했다.
프로젝트 디렉토리로 가서 app / src 경로에 제품 특징 (Alpha, Beta, Store 또는 특징 이름)과 같은 이름의 폴더를 만듭니다. 그런 다음 google-services.json 파일을 각 폴더에 복사하십시오. 하위 폴더에있는 각 제품 플레이버의 google-services.json 파일에서 "package_name"필드를 변경해야합니다.
google-services.json 파일로 이동하여 클라이언트 부분에서 패키지 이름을 확인하고 패키지 이름이 다른 경우 패키지 이름을 앱 패키지 이름과 비교 한 다음 운 좋게 잘 작동 한 앱 패키지 이름에 따라 클라이언트 패키지 이름을 변경하십시오.
google-services.json 파일-> "package_name": "com.example.application.tracker"
앱 패키지 이름-> 패키지 "com.example.application.tracker";
하나는 무료이고 하나는 유료라는 두 가지 소스 세트를 만들어서 해결했습니다. 이 두 폴더에는 필요한 Java 코드 및 리소스 파일이 포함되어 있으며 특정 플레이버의 요구 사항에 맞게 편집됩니다. 예를 들어 자바 클래스와 레이아웃 파일 모두에서 유료의 AdMob 코드를 제거하려고합니다.
파일을 다시 동기화하여 동일한 문제를 해결했습니다 google-services.json
.
도구> Firebase> Firebase에 연결> 동기화
Firebase 연결 을 만들 때 다음 지침을 따르십시오.
Firebase에 애플리케이션 이름 추가
응용 프로그램 pakage 이름 추가 (앱에서 사용중인 동일한 pakage 이름 작성)
때 중포 기지 메이크업 구글 - services.json의 파일은 다운로드 를하고 붙여 앱 폴더에
프로젝트 동기화 문제가 해결되었습니다 :)
감사합니다
응용 프로그램의 패키지 이름을 변경할 때도이 문제가 발생합니다.
안드로이드 스튜디오 프로젝트에서 "google-services.json"파일을 찾으십시오. 열어 봐. 응용 프로그램의 패키지 이름이이 파일에 기록 된 것과 동일한 지 확인하십시오.
애플리케이션의 패키지 이름과 "google-services.json"파일에 작성된 패키지 이름은 같아야합니다.
이것은 google-services.json 파일이 응용 프로그램에 속하지 않음을 의미합니다 (다른 응용 프로그램의 google-services.json을 다운로드 했습니까?) ... 그래서 해결하려면 다음을 수행하십시오.
1 : Firebase에 로그인하고 프로젝트를 엽니 다. 2 : 설정 아이콘을 클릭하고 프로젝트 설정을 선택하십시오. 3 : 내 앱 카드의 목록에서 구성 파일이 필요한 앱의 패키지 이름을 선택하십시오. 4 : google-services.json을 클릭하십시오. 다운로드가 완료되면 새 google-services.json을 프로젝트 루트 폴더에 추가하고 기존 폴더를 바꾸거나 이전 폴더를 삭제하십시오. 첫 번째 프로젝트에 google-services.json을 다운로드 한 다음이 특정 google-services.json이 현재 프로젝트에만 맞게 조정되었다고 가정하거나 잊어 버리는 것은 매우 일반적인 일입니다. 모든 프로젝트에는 고유 한 패키지 이름이 있기 때문에 다른 프로젝트는 아닙니다.
applicationIdSuffix
앱의 build.gradle 파일을 확인하십시오 . 텍스트가에 연결되어 있는지 확인하십시오 applicationId
. 그렇다면 제거하십시오.
간단합니다. Android Studio에서 로그 아웃하고 완전히 닫습니다. Android 스튜디오를 다시 연 다음 다시 Android Studio에 로그인하십시오.
그런 다음 Android 스튜디오 IDE에서 firebase에 연결하십시오. 이 절차는 저에게 효과적이었습니다.
이 문제를 해결하는 것은 간단합니다. app / build.gradle 파일의 패키지 이름이 App Manifest 파일의 패키지 이름과 동일한 패키지 이름인지 확인하십시오. 패키지 이름이 올바른지 확인하십시오. 이 문제를 해결해야합니다
이 문제를 해결하기 위해 그렇게 할 수 있습니다.
'Programing' 카테고리의 다른 글
Eclipse에서 빵 부스러기를 비활성화하는 방법 (0) | 2020.03.11 |
---|---|
같은 창과 같은 탭에서 URL 열기 (0) | 2020.03.11 |
Vim에서 세로 분할 창 크기를 늘리는 방법 (0) | 2020.03.11 |
iPhone의 탐색 모음에서 '뒤로'버튼을 숨기는 방법? (0) | 2020.03.11 |
부트 스트랩 모달에 포함 된 경우 Select2가 작동하지 않습니다 (0) | 2020.03.10 |