Kontekst:
Próbuję skonfigurować Google Analytics dla mojej aplikacji. (mając 4 niestandardowe buildTypes
i więcej niż kilka productFlavors
)
Działa dobrze, gdy wybieram, Build Variant
który ma applicationId
ustawiony na com.my.app.package.name
(nazwa pakietu używana podczas generowania google-services.json
). Ale moje inne smaki mają różne zastosowania.
Poszedłem za oficjalnym przewodnikiem, aby go skonfigurować.
Występuje błąd, gdy wybrany jest inny wariant kompilacji w Build Variants Tab
(który ma inny applicationId
(nazwa pakietu):
Błąd: wykonanie nie powiodło się dla zadania „: app: processAllcategoriesDebugfreeGoogleServices”.
Nie znaleziono pasującego klienta dla nazwy pakietu „com.my.app.package.name.debug”
Objaśnienie komunikatu o błędzie:
W nazwie zadania w powyższym komunikacie o błędzie Debugfree
jest mój niestandardowy buildType
i Allcategories
jest jednym z moich productFlavors
.
Rozumiem błąd i wiem, że nazwa pakietu różni się od tego, którego użyłem podczas generowania JSON, ale staram się to rozwiązać.
Problem:
Teraz google-services.json
rezyduje w app
folderze i dlatego nie jestem w stanie ich rozdzielić dla każdego smaku produktu, upuszczając je w folderze zestawu źródłowego określonego smaku.
Pytania:
- Mój zwyczaj
byildType
debugowania sufiksów.debug
doapplicationId
(nazwa pakietu). Czy jest jakiś sposób, aby zmusić go do pracy zgoogle-services.json
wersją, która ma moje wydanieapplicationId
(tj. Bez sufiksu.debug
) - Czy istnieje sposób skonfigurowania wielu smaków produktu w tym samym
google-services.json
pliku bez użycia osobnych plików i zadań do skopiowania wymaganego pliku doapp
folderu. Wiem, że można to zrobić za pomocą,task
jak wspomniano w tym poście . Czy istnieje prostszy sposób, aby mieć tylko jeden plik lub wybrać odpowiedni plik na podstawie konfiguracji stopni? - Widzę, że
package_name
polegoogle-services.json
ma nazwę pakietucom.my.app.package.name
. Czy mogę ręcznie dodać wiele nazw pakietów, aby działały dla wszystkich wariantów kompilacji? Jeśli tak, jak to zrobić? Nie można znaleźć żadnych instrukcji w dokumentacji.
źródło
Odpowiedzi:
Sprawdź nazwę pakietu w pliku google-services.json , powinna być taka sama jak nazwa lokalnego pakietu aplikacji
Przykład
W tym przypadku nazwa mojego lokalnego pakietu to com.my.app.package.name, więc również zmieniłem nazwę mojego pakietu w google-services.json na nazwę mojego lokalnego pakietu
źródło
Znajdź to:
Źródło
Źródło 2
źródło
Nie znaleziono pasującego klienta dla nazwy pakietu „com.tf” Jestem prawie pewien, że „nazwa_pakietu” w google-services.json nie pasuje do twojego „applicationId” w klasie aplikacji.
stopień aplikacji:
google-services.json
Rozwiązanie : Po prostu upewnij się, że
package_name
iapplicationId
muszą być takie same.źródło
application id
w aplikacji go przybiłupewnij się, że nazwa pakietu w pliku „google-services.json” jest taka sama jak nazwa pakietu aplikacji.
źródło
Znalazłem rozwiązanie:
Musimy stworzyć dwie „aplikacje” w projekcie firebase, a następnie możemy pobrać plik json z dowolnej aplikacji (pobrałem z aplikacji o smaku). Będzie zawierał dane obu aplikacji. Możemy po prostu skopiować plik json do katalogu głównego aplikacji.
Źródło: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
źródło
Musisz umieścić
google-services.json
wapp/
reż. I dla każdego typu kompilacji powinien znajdować się odpowiedni dyrektor wapp/src
folderze.Na przykład, jeśli masz wersję i debugujesz:
We wszystkich plikach google-services.json należy podać poprawne
package_name
zgodnie z typem kompilacji.Na przykład powinien wyglądać wewnętrzny katalog debugowania
{com.myapp}.debug
źródło
"client"
tablicy (dodać przecinek między elementami) i zmienić tylko"package_name"
wartość nowego elementu, aby uwzględnić.debug
sufiks. Następnie odbuduj. To działało dla mnie w AS 2.3.3.Ten błąd występuje, gdy masz pobrany plik Json usług Google w swoim projekcie, którego nazwa pakietu nie zgadza się z nazwą pakietu projektu .
Ostatnio zmieniłeś nazwę pakietu projektu?
Aktualizuje wszystkie klasy, ale nie plik Gradle . Więc sprawdź, czy nazwa pakietu jest poprawna w twoim Gradle, a może także Manifest.
źródło
Wykonaj poniżej kroku.
1). Sprawdź
applicationId
wgradle
pliku na poziomie aplikacji ,2). Sprawdź
package_name
w swoimgoogle-services.json
pliku,3). Sprawdź
package
w swoimAndroidManifest
plikui dla pełnego potwierdzenia ustaw nazwę katalogu pakietu roboczego, tj. („com.example.app”) jest również taka sama.
źródło
package
manifestu (i wszystkich plików we wszystkich pakietach), ponieważapplicationId
zmieni się identyfikator aplikacji.Po pierwsze, dodaj przyrostek do pakietu aplikacji w Gradle:
Spowoduje to nazwanie twojego pakietu
Następnie przejdź do Firebase w ramach bieżącego projektu i dodaj do niego kolejną aplikację na Androida o tej nazwie pakietu.
Następnie zastąp istniejący plik google-services.json nowym plikiem wygenerowanym za pomocą nowej aplikacji.
W rezultacie powstanie coś, co ma wiele sekcji „client_info”. Powinieneś skończyć z czymś takim:
źródło
sprawdź, czy
client_id
ipackage_name
w google-services.json pliku ma prawidłową wartość zgodnie z nazwą pakietu.Należy dodać wspomniany plik do katalogu flavours z odpowiednią nazwą pakietu w polu
client_id
ipackage_name
.źródło
1. Sprawdź nazwę pakietu i identyfikator aplikacji powinny być takie same
2. Sprawdź nazwę pakietu google-services.json, który jest dostępny w folderze aplikacji
źródło
Upewnij się, że zmieniłeś nazwę ApplicationId w pliku gradle po zmianie nazwy pakietu
źródło
Otwórz plik Google-services.json i poszukaj tej sekcji w pliku:
sprawdź, czy paczka jest taka sama jak nazwa paczki. Mój był inny, więc go zmieniłem i zadziałało.
źródło
Pochodzę z React Native, ale myślę, że dotyczy to również tego pytania. Sprecyzować.
W obrębie pliku
android/app/build.gradle
wyszukajapplicationId
(wandroid
,defaultConfig
)i upewnij się, że ta wartość jest taka sama
client[0]client_info.android_client_info.package_name
jako wartość w ciągu
google-services.json
.źródło
Musisz także zmienić nazwę pakietu w google-services.json
źródło
Jeśli nazwa pakietu w pliku Google-services.json jest w porządku, przejdź do pliku gradle.properties. Następnie zmień APPLICATION_ID = "com.yourpackage.name"
źródło
Myślę, że dodałeś plik firebase json „google-services” .json do nowego pliku. Upewnij się, że utworzyłeś nowy plik, sprawdź link jak utworzyć plik json z firebase i powinien pasować do nazwy twojego pakietu
Po drugie, jeśli zmieniasz nazwę pakietu, użyj opcji „zamień w ścieżce”, kiedy klikniesz prawym przyciskiem myszy pod plikami, kiedy wybierzesz projekt z menu rozwijanego. Musisz wyszukać nazwę pakietu w całym projekcie i zastąpić go!
Mam nadzieję że to pomoże !
źródło
jeśli nic z tego nie działało dla jednego z was, mój problem dotyczył nazwy pakietu, która nie zaczynała się od „com”. zmieniłem to, teraz działa.
mam nadzieję, że to pomaga
źródło
upewnij się, że identyfikator aplikacji Gradle.app jest taki sam jak nazwa pakietu. mój problem był taki i tak rozwiązałem
źródło
przejdź do katalogu projektu i utwórz foldery na ścieżce app / src, które nazwają smaki Twojego produktu (takie jak Alpha, Beta, Store lub jakkolwiek nazwa Twojego smaku). następnie skopiuj plik google-services.json do każdego folderu. nie zapomnij zmienić pola „nazwa_pakietu” w pliku google-services.json każdego smaku produktu, który podfolderowałeś.
źródło
Przejdź do pliku google-services.json, aw części klienta sprawdź nazwę pakietu i porównaj go z nazwą pakietu aplikacji, jeśli są one różne, a następnie zmień nazwę pakietu klienta zgodnie z nazwą pakietu aplikacji, dla mnie to zadziałało.
plik google-services.json-> „nazwa_pakietu”: „com.example.application.tracker”
Nazwa pakietu aplikacji-> pakiet „com.example.application.tracker”;
źródło
Rozwiązałem go, tworząc dwa zestawy źródłowe, jeden bezpłatny, a drugi płatny. Oba te foldery będą zawierać wymagany kod Java i pliki zasobów, które będą edytowane zgodnie z wymaganiami danego smaku. Na przykład chcesz usunąć kod AdMob w Płatne zarówno z klas Java, jak i plików układu.
źródło
Rozwiązałem ten sam problem, ponownie synchronizując plik
google-services.json
.źródło
google-services.json
.Rozwiązałem ten sam problem tutaj proste rozwiązanie: podczas tworzenia połączenia bazy ogniowej postępuj zgodnie z następującymi wskazówkami:
Dodaj nazwę aplikacji w Firebase
Dodaj nazwę pakietu aplikacji (napisz tę samą nazwę pakietu, której używasz w aplikacji)
kiedy firebase utworzy plik google-services.json , wystarczy go pobrać i wkleić w folderze aplikacji
Zsynchronizuj swój projekt Problem został rozwiązany :)
Dziękuję Ci
źródło
Ten problem pojawia się również, gdy zmieniam nazwę pakietu mojej aplikacji.
W projekcie Android Studio znajdź plik „google-services.json”. Otwórz to. i sprawdź, czy nazwa pakietu aplikacji jest taka sama, jak zapisana w tym pliku.
Nazwa pakietu i nazwa pakietu zapisane w pliku „google-services.json” muszą być takie same.
źródło
Oznacza to, że plik google-services.json albo nie należy do Twojej aplikacji (Czy pobrałeś google-services.json dla innej aplikacji?) ... więc aby to rozwiązać, wykonaj następujące czynności:
1: Zaloguj się do Firebase i otwórz swój projekt. 2: Kliknij ikonę Ustawienia i wybierz Ustawienia projektu. 3: Na karcie Twoje aplikacje wybierz z listy nazwę pakietu aplikacji, dla której potrzebujesz pliku konfiguracyjnego. 4: Kliknij google-services.json. Po zakończeniu pobierania dodaj nowy plik google-services.json do folderu głównego projektu, zastępując istniejący .. lub po prostu usuń stary. Pobranie pliku google-services.json dla pierwszego projektu jest bardzo normalne, a następnie założyć lub zapomnieć, że ten konkretny plik google-services.json jest dostosowany tylko do bieżącego projektu, ponieważ nie ma go, ponieważ wszystkie projekty mają unikalną nazwę pakietu.
źródło
Sprawdź
applicationIdSuffix
w pliku build.gradle aplikacji. Sprawdź, czy łączy on dowolny tekst z TwoimapplicationId
. Jeśli tak, usuń go.źródło
możesz to zrobić, aby rozwiązać ten problem.
źródło
Poprostu. Wyloguj się z Android Studio, zamknij go całkowicie. Ponownie otwórz studio Android, a następnie ponownie Zaloguj się do Android Studio.
Następnie spróbuj połączyć się z firebase ze studia IDE systemu Android. Ta procedura zadziałała dla mnie.
źródło
Rozwiązanie tego jest proste: upewnij się, że nazwa pakietu w pliku app / build.gradle ma taką samą nazwę, jak nazwa pliku manifestu aplikacji. i upewnij się, że nazwa pakietu jest poprawna. To powinno rozwiązać ten problem
źródło