2014-01-08 5 views
1

저는 프로그래밍이 새로워졌습니다. 지도를 만들고 있는데, 많은 튜토리얼을 따라갔습니다. 모두 매우 비슷하지만, 왜 내 앱이 작동하지 않는지 모르겠습니다. 앱이 충돌하지 않지만지도를 열면 앱 제목과지도가 표시되어야하는 흰색 화면이 나타납니다. 왜 이런 일이 일어나는 지 아십니까?지도 앱에 흰색 화면이 표시되는 이유

내 응용 프로그램 매니페스트, 활동 : main.xml 및 mainactivity.java가 여기에 있습니다. 찾을 수없는 오류가 있습니다. 열기 오류 추적 파일 :

또한 경우는 로그 캣이 날을 말한다 도움이 해당 파일이나 디렉토리 (2)

APP MANIFEST

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tdr.mapa1" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <permission 
     android:name="com.tdr.mapa1.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 

<uses-permission android:name="permission_name"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="com.tdr.mapa1.permission.MAPS_RECEIVE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 

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

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 

    <uses-sdk 
     android:minSdkVersion="12" 
     android:targetSdkVersion="17" /> 
    <application 

     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

    <uses-library android:name="com.google.android.maps" 
        android:required="false"/> 

    <activity 
     android:name="com.tdr.mapa1.MainActivity" 
     android:label="@string/app_name" > 

    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

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

    </activity> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="<API_KEY>"/> 

    </application> 

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

    </manifest> 

주요 활동

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

</RelativeLayout> 

MAINACTIVITY.JAVA

package com.tdr.mapa1; 

import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 



    } 
} 

당신이 나를 도울 수 있기를 바랍니다.

+0

에뮬레이터를 사용하고 있습니까? – user2340612

+2

RelativeLayout에 일부보기가 있어야합니다. 필자의 경우 MapView라고 가정합니다. – Android

+0

@ user2340612 아니요, 직접 전화로 테스트하고 있습니다. – user3175089

답변

0

먼저 당신의 오류 :

Error opening trace file: No such file or directory (2) 

아무것도 의미하지 않으며, 당신이 그것에 어떤주의를 기울여야 노드한다.

둘째, 모두 메타 데이터 태그는 응용 프로그램의 범위 안에 있어야한다과 같이 :

... 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="<API_KEY>"/> 

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

마지막으로, 당신은 실제로 활동 레이아웃 파일에서지도 객체를 생성하지 않습니다, 당신이 무엇을 가지고 빈 RelativeLayout이며 빈 흰색 화면이 표시됩니다. 필요한 것은 MapFragment을 거기에 추가하거나 대상 API에 따라 SupportMapFramgnet을 추가하는 것입니다. (귀하의 경우는 MapFragment 될 것입니다.)과 같이

:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 
    <fragment 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 
당신은 내가이 주제에 쓴이 블로그 게시물에서 자세한 정보를 얻을 수 있습니다

:

Google Maps API V2 Guide

+0

정말 고마워요! – user3175089

+0

환영합니다, @ user3175089. 다행스럽게도 도움이되었습니다.) –

1

참조 여기에 매니페스트 파일의 키를 사용하여 API 키를 변경하고 다음 단계를 따르세요. 및 android manifest에 언급 된 패키지 이름으로 API 키 생성 파일 및 google_play_services_lib 프로젝트가 프로젝트의 작업 공간에만 있어야합니다.

매니페스트 파일 :

<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.geeklabs.map.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

     <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="replace with your API key"/> 

    </application> 

</manifest> 

MainActivity.java :

package com.geeklabs.map; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 

activity_main.XML :

<?xml version="1.0" encoding="utf-8"?> 
    <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.MapFragment"/> 

그리고 반드시 다음 단계가 올바른지 여부를 수행합니다

단계 : * 해당 장치를 보장하기 위해 구글은 구글 서비스 레브 플레이 설치 * APK Play 서비스가 있습니다.

  • 2 개 이상의

    enter image description here 지금 ( enter image description here

  • 이 프로젝트에 SHA1의 등록 "Google Maps Android API v2가"를 가능하게 https://code.google.com/apis/console/
  • 에서 을 프로젝트를 만들려면 쓰기 SHA1 필요해 ; your.app.package.name)를 API 콘솔에서 가져오고 키를 받으십시오.
  • 디렉토리 ANDROID_SDK_DIR/extras/google/google_play_services/li YOUR_PROJECT/난독 화 프로젝트에 다음 줄을 추가

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

  • bproject/구글 플레이-services_lib 프로젝트의 루트에
  • 는 YOUR_PROJECT/project.properties에 다음 줄을 추가합니다 이 .txt

-keep class * extends java.util.ListResourceBundle {

}

자, 이제 안드로이드 구글지도의 API V2를 사용하여 자신의 구글지도 응용 프로그램을 만들 준비가.

최소 SDK = 8로 애플리케이션을 생성하는 경우 MapFragment 대신 Android 지원 라이브러리 v4 + SupportMapFragment를 사용하십시오.

나에게 알려주세요.

관련 문제