문제

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

이전에 일했을 때 작동을 멈추었는지 확신하지 못하지만 이것은 해결책이었습니다.

SupportMapFragment - 바이너리 XML 파일 행 # 2 :inflating 클래스 조각

에 오류가 발생했습니다

다른 팁

모든 것이 동일한 경우 (패키지 이름 또는 키를 변경하지 않고 디버그 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 ()

주변의 로그에 단서를 얻을 수 있습니다.

Googlemap Android API 설정 , 그것은 내가 한 일과 일하는 것입니다.나는 suppotmapfragment를 사용하지 않았지만이 링크에서 여기 요소는

인 것 같습니다.
<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 키가있을 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top