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.
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
- aby utworzyć projekt w https://code.google.com/apis/console /
- aby włączyć " Google Maps Android API v2"
- 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.
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
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!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:)
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.
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.
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.
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łosujWarning: 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:]}
Stworzyłem nową mapę za pomocą kliknięcia prawym przyciskiem myszy Android Studio lista opcji: New - > Google - > Google Maps Activity
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.
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.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ń.
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:)
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
.
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)
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ć.
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.
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.
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 .
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