Google지도 Android API v2가 작동을 멈췄습니다
-
20-12-2019 - |
문제
Google지도는 게시 된 앱에서 일하고 있었고 지금은지도를 표시하는 것을 중단 한 이유로 웬일인지에 대해서 일했습니다. 여기에 나타납니다 :
<manifest
.....
<permission
android:name="com.x.x.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.x.x.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<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="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
.....
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/map_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="4030500" />
</application>
.
디버그 및 릴리스 저장소에서 SHA-1 키를 릴리스하고 Google지도 Android API v2에 넣고 API 키를 매니페스트 (하드 코딩 및 Strings.xml)에 넣었습니다. < / P>
여기 레이아웃이 있습니다.
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
.
여기에 표시되는 조각에서 SupportMapFragment에 액세스하려고하는 방법은 다음과 같습니다.
private void setUpMapIfNeeded()
{
SupportMapFragment fragment = (SupportMapFragment)fManager.findFragmentById(R.id.map);
if (fragment != null)
{
mMap = fragment.getMap();
}
// Check if we were successful in obtaining the map.
if (mMap != null)
setUpMap();
}
.
그러나 조각은 항상 null을 반환합니다. 한 지점에서 나는 메시지를 인증하지 못했지만, 현재 나는 그것을 보지 못한다. 빈지도 만.
업데이트 : 열쇠에 문제가있는 것 같지 않으면
와 관련이 있습니다. android:name="com.google.android.gms.maps.SupportMapFragment"
.
레이아웃 파일에서. ID로 조각을 얻으려고 할 때 널리 팅됩니다. 실망스러운 일은 설정이 기본적으로 동일하고 작동하는 테스트 프로젝트를 만들었습니다. 그러나이 프로젝트에서 동일한 코드를 시도 할 때 작동하지 않습니다. 두 프로젝트는 모두 동일한 Google Play 서비스 라이브러리 프로젝트를 가리키고 있으며 양쪽 모두 지원 라이브러리 V4를 가리 킵니다. 매니페스트조차도 동일한 항목이 있습니다. 또한 SupportMapFragment를 MapFragment로 바꾸면 괜찮습니다.
해결책 2
이전에 일했을 때 작동을 멈추었는지 확신하지 못하지만 이것은 해결책이었습니다.
에 오류가 발생했습니다다른 팁
모든 것이 동일한 경우 (패키지 이름 또는 키를 변경하지 않고 디버그 API 키에 대한 디버그 SHA1을 사용하지 않으므로 작업이 중지되었다는 메시지가 멈췄습니다. 플레이 서비스 버전. 여기에서 하드 코딩 된 버전을 제거하십시오
<meta-data
android:name="com.google.android.gms.version"
android:value="4030500" />
.
아마도 Google Play 서비스 버전에서는 버전이 작동하지 않을 것입니다 ( google-play-services_lib> res> 값> version.xml 에서 실제 버전을 chek 할 수 있습니다). 사용중인 항아리가 정확히 그 버전인지 확인하고 그렇지 않은 경우 변경하십시오. 또한 로그 고양이를 확인하면
와 같은 것을 볼 수 있습니다.로 인해 java.lang.IllegalStateException : 귀하의 메타 데이터 태그 App의 AndroidManifest.xml에는 올바른 값이 없습니다.
메타 데이터가
를 변경합니다.<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
.
Google 권장 사항 및 다른 하나를 따르십시오. int int int
를 조언합니다어쨌든, 당신이 logcat (또는 여기에 게시하십시오)을 살펴보면, 우리는 setupmapifneeded ()
주변의 로그에 단서를 얻을 수 있습니다.<fragment
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
. 아마 이미 대부분의 것을 확인했을 것입니다 (내가 한 것처럼). My Map은 디버그 키 스토어와 완벽하게 작동했지만 서명 된 키로 전환하면 비워졌습니다. 개발 시간 중에 사용할 Google 계정에 API 키 (디버그 키 + 프로젝트 패키지 이름)를 만들 때 내 문제가 해결되었습니다. 그리고 다른 Google 계정에 서명 된 다른 API 키 (서명 된 키 스토어 + 프로젝트 패키지 이름)를 만들었습니다. 분명히 동일한 Google 계정에서 동일한 패키지 이름 (키 스토어가 다르더라도) 동일한 패키지 이름에 대해 둘 이상의 API 키가있을 수 없습니다.