无法在Android中加载地图(ClassDefNotFoundError)

时间:2013-04-11 18:05:52

标签: android maps

我正在尝试使用Google地图创建一个简单的Android项目,但是,我似乎无法通过一个简单的错误

这是源代码:

package mapa.pack.mapamerodeador;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

    public class ActividadPrincipal extends FragmentActivity {

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

此外,这是布局:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:background="@color/fondo_pag1"
        android:orientation="vertical">

            <TextView 
                      android:id="@+id/titulo_pag1"
                      android:layout_height="wrap_content"
                      android:layout_width="fill_parent" 
                      android:layout_alignParentTop="true"
                      android:text="@string/pag1"
                      android:textSize="23sp"
                      android:gravity="center_horizontal"/>

            <fragment
                class="com.google.android.gms.maps.SupportMapFragment"
                android:id="@+id/mapa"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_below="@id/titulo_pag1"
                android:layout_marginBottom="4sp"
                android:layout_marginTop="2sp"
                android:layout_above="@+id/buttonUno" />

            <Button
                android:id="@+id/buttonUno"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:layout_marginRight="5dp"
                android:padding="5dp"
                android:background="@color/gris"
                android:layout_alignParentRight="true"
                android:layout_alignParentBottom="true"
                android:text="@string/link_pag_2" />

 </RelativeLayout>

最后但并非最不重要的是,清单:

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

<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"/>
<!-- The following two permissions are not required to use
 Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<permission
    android:name="mapa.pack.merodeador.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
<uses-permission android:name="mapa.pack.merodeador.permission.MAPS_RECEIVE"/>

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

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

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

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

    <activity
        android:name="mapa.pack.mapamerodeador.ActividadPrincipal"
        android:theme="@android:style/Theme.NoTitleBar"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:theme="@android:style/Theme.NoTitleBar" 
        android:name="mapa.pack.mapamerodeador.Autores" />

    <activity 
        android:theme="@android:style/Theme.NoTitleBar"
        android:name="mapa.pack.mapamerodeador.Ajustes" />

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

我知道清单中有一些我没有在代码中引用过的活动,但是因为即使这两行看起来都不起作用,所以我评论了其余部分。当我尝试执行它时,我得到一个“java.lang.NoClasDefFoundError:com.google.android.gms.R $ styleable at com.google.gms.maps.GoogleMapsOptions.createFromAttributes(UnknownSource)”
有谁知道可能是什么问题?谢谢!! =)

编辑:如果我评论&lt;片断&gt;在XML中,然后它不会显示任何内容,但至少它不会崩溃,所以我认为有什么不对,就在那里,有没有办法解决它?

2 个答案:

答案 0 :(得分:0)

模拟器不会显示新的Google Map api v2。你需要有一个真实的设备来测试它。

答案 1 :(得分:0)

您的清单文件中存在一些问题:

1。当您打包名称为:

package="mapa.pack.mapamerodeador"

在google maps perrmission中设置mapa.pack.merodeador

<permission
android:name="mapa.pack.merodeador.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>

必须相同。

2. :删除此代码:

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

这是Google Map API V1权限,Google Map API V2中不需要。

3。但是根据您的错误,我的猜测是您没有正确引用google-play-services库。检查我写的这篇博客文章的前三个步骤,并确保你做好所有步骤:

Google Map API V2