Google Maps Android API v2 authorization failed

Moje kroki:

  • otrzymałem Kod SHA1 z debugowania.keystore
  • tworzenie aplikacji w konsoli API google
  • enabled Google map api v2
  • input SHA1;my.package.name
  • Pobierz klucz API
  • Utworzony plik AndroidManifest:

        <permission
                android:name="my.package.name.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    
        <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/>
    
        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
    
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    
        <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    
        <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true">
    
            <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" />
    
            <activity android:name="MyActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>
    </manifest>
    
  • Utworzony layout

  • Umieść "google-play-services.jar " do libs

Po kompilacji mam crash:

  ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
                java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
                at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
                at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
                at android.app.Activity.onCreateView(Activity.java:4716)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
                at android.app.Activity.setContentView(Activity.java:1881)
                at com.example.gm2.MyActivity.onCreate(MyActivity.java:16)
                at android.app.Activity.performCreate(Activity.java:5104)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
                at android.app.ActivityThread.access$600(ActivityThread.java:141)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:5039)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                at dalvik.system.NativeStart.main(Native Method)

Potem zmieniłem layout do:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:id="@+id/map"
             android:layout_width="match_parent"
             android:layout_height="match_parent" />

I zmienił moją aktywność na

  super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();

    transaction.add(R.id.map, MapFragment.newInstance());           
    transaction.commit();

W rezultacie aplikacja została uruchomiona, ale nie widziałem mapy.

Log konsoli:

ERROR/Google Maps Android API(10369): Authorization failure.
Author: Adinia, 2012-12-04

16 answers

Kroki :

  • aby upewnić się, że urządzenie ma usługi Google Play APK
  • aby zainstalować usługę Google Play Rev. więcej niż 2

Tutaj wpisz opis obrazka

  • aby utworzyć projekt w https://code.google.com/apis/console /
  • aby włączyć " Google Maps Android API v2" Tutaj wpisz opis obrazka
  • aby zarejestrować SHA1 w projekcie (Teraz musisz napisać SHA1;your.app.package.name) na konsoli API i pobierz klucz API
  • aby skopiować katalog ANDROID_SDK_DIR/extras/google/google_play_services/libproject / google-play-services_lib to root twojego projektu
  • aby dodać następny wiersz do YOUR_PROJECT / project.właściwości

android.library.reference.1=google-play-services_lib

  • aby dodać kolejne wiersze do YOUR_PROJECT/proguard-project.txt

.

-keep class * extends java.util.ListResourceBundle {

   protected Object[][] getContents();

}

Teraz jesteś gotowy, aby utworzyć własną aplikację Map Google za pomocą Google Map API V2 dla Androida.

Jeśli tworzysz aplikację z min SDK = 8, Użyj Android support library v4 + SupportMapFragment zamiast MapFragment.

 99
Author: Rusfearuth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-17 11:46:46

Sprawdź również ten post: Google Map Android Api v2 przykładowy kod nie działa, jeśli jesteś całkowicie pewien, że zrobiłeś właściwe kroki, a następnie wykonaj drugą odpowiedź, uwierzytelnianie zostanie gdzieś buforowane, spróbuj odinstalować aplikację ręcznie (tak jak w przypadku normalnej aplikacji), a następnie" uruchom " ponownie projekt

 34
Author: adelriosantiago,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:57

W tym przypadku nie jest to możliwe, ponieważ nie jest to możliwe, ponieważ nie jest to możliwe.]}

Krok 1: Złóż wniosek o klucz API

Jeśli nie znasz konsoli Google API, przeczytaj bardzo dobrą odpowiedź Rusfearuth powyżej.

Krok 2: Sprawdź, czy SHA Hash (w tym przypadku używam klucza debugowania eclipse):

Na komputerze z systemem Windows dostał się do katalogu użytkownika na polecenie prompt:

C:\Users\you>keytool -list -alias androiddebugkey -keystore .android\debug.keyst
ore -storepass android -keypass android

Dostaniesz coś w stylu:

androiddebugkey, 15.10.2012, PrivateKeyEntry,
Zertifikat-Fingerprint (SHA1): 66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6

Następnie spójrz na nazwę pakietu aktywności na mapie, np. com.przykład.mypackagename

Połącz to i sprawdź to z ustawieniami w konsoli Google API:

66:XX:47:XX:1E:XX:FE:XX:DE:XX:EF:XX:98:XX:83:XX:9A:XX:23:A6;com.example.mypackagename

Skąd masz swój klucz API:

AZzaSyDhkhNotUseFullKey49ylKD2bw1HM

Punkt 3. Manifest meta dane

Sprawdź, czy metadane są obecne i zawierają właściwy klucz. Jeśli zwolnisz swoją aplikację, potrzebujesz innego klucz.

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="AZzaSyDhkhNotUseFullKey49ylKD2bw1HM" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Punkt 4. Cechy manifestu:

Potrzebujesz tego wpisu, ponieważ API map wymaga wsparcia grapics:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
Nie martw się, 99,7% urządzeń to wspiera.

Punkt 5. Biblioteka manifestu:

Dodaj bibliotekę google.

    <uses-library
        android:name="com.google.android.maps"
        android:required="false" /> // This is required if you want your app to start in the emulator. I set it to false also if map is not an essential part of the application.

Punkt 6. Uprawnienia manifestu:

Sprawdź dwukrotnie nazwę pakietu: com.przykład.yourpackage

<permission
    android:name="com.example.yourpackage.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.example.yourpackage.permission.MAPS_RECEIVE" />

Dodaj uprawnienia:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

Poniższe uprawnienia są opcjonalne i nie są wymagane, jeśli po prostu pokażesz mapę. Staraj się ich nie używać.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Punkt 7. Dołącz fragment mapy do układu:

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    class="com.google.android.gms.maps.SupportMapFragment"
    map:cameraTargetLat="47.621120"
    map:cameraTargetLng="-122.349594"
    map:cameraZoom="15" />

Jeśli Twoje zwolnienie do 2.wersje X Androida musisz dodać wsparcie w swojej aktywności:

import android.support.v4.app.FragmentActivity;

Dla mapy: wpisy do pracy zawierają

xmlns:map="http://schemas.android.com/apk/res-auto"

W układzie aktywności (np. LinearLayout).

W moim przypadku muszę wyczyścić projekt za każdym razem zmieniam coś w układzie. Wygląda na pluskwę.

Krok 8: Użyj Eclipse-Project-Clean.

Smacznego!
 18
Author: Gunnar Bernstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-20 01:14:12

Należy skorzystać z projektu biblioteki znajdującego się na: ANDROID-SDK-DIRECTORY/extras/google/google_play_services / libproject

To naprawi twój pierwszy problem.

Nie jestem pewien co do twojego drugiego, ale może to być efekt uboczny pierwszego. Nadal staram się, aby Mapa działała w mojej własnej aplikacji:)

 16
Author: Scott Kennedy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 06:15:40

Dzisiaj stanąłem przed tym problemem. Używałem Android Studio 2.1.3, windows 10. Podczas debugowania działa dobrze, ale jeśli zaktualizuję do trybu release to nie działa. Wyczyściłem wszystkie warunki proguard, zaktualizowałem, ale to nie było rozwiązanie.

Rozwiązanie jest związane ze strukturą projektu. Google_maps_api.plik xml różnił się między app \ src \ debug \ res I app \ src \ release \ res. zrobiłem ręcznie Kopiuj Wklej z debug do folderu release.

Teraz działa.

 5
Author: Yaya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-17 15:37:22

Rozwiązałem ten błąd sprawdzając nazwę pakietu w manifeście i aplikacji build.gradle.

W manifeście:

Używam nazwy pakietu jako:

com.app.triapp

W app build.gradle:

 defaultConfig {

        applicationId "com.app.live"
    }

Po zmianie na com.app.triapp w build.gradle, rozwiązałem mój problem.

 3
Author: Luffy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 09:57:34

Jestem migracja z V1 do V2 Google Maps. Miałem ten błąd próbując uruchomić aplikację przez Eclipse. Główną przyczyną dla mnie było używanie klucza certyfikatu wydania zamiast klucza debugowania Androida, który jest używany, gdy uruchamiasz go za pomocą Eclipse. Następujące polecenie (OSX/Linux) wyświetli klucz SHA1 z magazynu kluczy debug:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Jeśli zamiast tego używasz systemu Windows 7, Użyj tego polecenia:

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Prawdopodobnie najlepiej jest odinstalować aplikację całkowicie z urządzenia przed próbą użycia nowego klucza, ponieważ Android buforuje poświadczenia bezpieczeństwa.

 2
Author: Chris Knight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-21 23:44:05

Po prostu dodaj to do pliku manifestu:

**<uses-library android:name="com.google.android.maps" />**
Na Przykład...
<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name=".California"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

I prosimy o aktualizację usługi google play lib...Przejdź do okna - > Android sdk manager - > zaktualizuj usługę google play...zainstalowałem..usuń stary i zatrzymaj ten. Weźmy to z ANDROID-SDK-DIRECTORY/extras/google/google_play_services /

Dzięki..Proszę zagłosuj
 2
Author: Mitul Goti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 12:41:37

Zastosowałem się do większości, jeśli nie wszystkich, sugestii Gunnara Bernsteina wymienionych powyżej i nadal nie zadziałało. Jednak zaczęło działać po tym, jak podążałem za jego sugestiami i następującymi:]}

  1. Stworzyłem nową mapę za pomocą kliknięcia prawym przyciskiem myszy Android Studio lista opcji: New - > Google - > Google Maps Activity

  2. Następnie otworzyłem google_maps_api.plik xml, który automatycznie generuje i wykorzystuje podany link do utworzenia nowego API Klucz. I wykonałem wszystkie kroki i zapisałem nowy klucz pod moim obecnym projektem. I następnie usunąłem mój stary zarejestrowany klucz API, ponieważ nie był już wymagany.

  3. Pod plikiem Manifest zamieniłem starą wartość klucza API na Skrót tekstowy utworzony przez ten nowy plik XML: android:value="@string/google_maps_key", zamiast podania klucza bezpośrednio.

  4. Na koniec usuń nową MapActivity, ale zachowaj plik xml, który był stworzony w tym procesie.

Uwaga: tworząc klucz API w tym sposób w kolumnie ograniczenia, pod poświadczeniami, teraz podano "aplikacje na Androida". Wcześniej, gdy nie działało w kolumnie "Android apps, 1 API" lub coś podobnego. Nie wiem, czy to robi różnicę, czy nie.

Uwaga: wygląda jak znacznik meta-danych pod plikiem manifestu:

android:name="com.google.android.maps.v2.API_KEY

Zostało zastąpione przez:

android:name="com.google.android.geo.API_KEY"

Myślę, że oba mogą być używane, ale lepiej od początku używać tego drugiego.

Uwaga: wartość podana w kompilacji.gradle file, under android - > defaultConfig - > applicationId musi pasować do tekstu Nazwa pakietu pod stroną poświadczeń.

 2
Author: goldenmaza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 16:43:36

"java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable "

A też miał ten błąd, musisz: File - > import - > Existing android Code Into Workspace - > Browse - > Android sdks -> extras -> google -> google_play_services -> lib_project - > google_play_services_lib and OK. Sprawdź projekt i zakończ.

Projekt przechodzi do Eksploratora pakietów. Teraz przejdź do swojego projektu (z błędem) - > właściwości - > Android i w Bibliotece kliknij Dodaj... google_play_services_lib powinien tam być! Dodaj i spróbuj jeszcze raz:)

 1
Author: edwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-15 01:52:24

Miałem ten sam problem, ale okazało się, że to dlatego, że stworzyłem dwa różne klucze API map z tym samym odciskiem palca SHA-1 o prawie podobnej nazwie pakietu com.bla.bla i drugim com.bla.bla.something.

 1
Author: Zamrony P. Juhara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 07:49:22

Miałem dokładnie ten sam problem i po prostu musiałem ustawić SDK dla projektu biblioteki MapsApiV2 na Android 2.3.3 (API lvl 10)

 0
Author: Informatic0re,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-03 08:43:59

Miałem ten sam problem. Po około dwóch godzinach googlowania, ponownych prób, wielokrotnej regeneracji klucza API itp. odkryłem, że włączyłem niewłaściwą usługę w konsoli API Google. Włączyłem usługę Google Maps API v2 , ale dla aplikacji na Androida trzeba użyć Google Maps Android API v2. Po włączeniu odpowiedniej usługi wszystko zaczęło działać.

 0
Author: Nino Stella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-03 16:27:07

Twój ECLIPSE może zmienił klucz SHA1, więc musisz regen swój klucz google z nowym kluczem SHA1 tutaj: https://console.developers.google.com/project/watchful-net-796/apiui/credential Następnie skopiuj nowy klucz do manifestu i przeładuj tę stronę google kilka razy, a twój klucz zostanie zaktualizowany, Odbuduj swój projekt, będzie działał. P / S: za mój błąd usunąłem .android folder więc Eclipse regen SHA1.

 0
Author: nobjta_9x_tq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-25 09:15:20

Wykonałem ten sam krok podany w dokumencie Google, ale otrzymałem ten sam błąd. Później zdałem sobie sprawę, że podpisuję swoją aplikację za pomocą aplikacji.keystore i klucz SHA, którego używałem do generowania klucza API, był debugowaniem.

Więc po prostu usunąłem signingConfig signingConfig.generic z pliku by build.gradle i moja Mapa zaczęła działać dobrze.

Mam nadzieję, że to komuś pomoże.
 0
Author: SKP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 06:16:24

Miałem do czynienia z tym samym problemem.

Jeśli wydano api dla wersji release aplikacji. Wtedy api będzie działać tylko dla wersji release, a nie dla wersji debugowania. Upewnij się więc, że używasz wersji release w telefonie lub emulatorze .

 0
Author: Salman Saleh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-05 20:12:45