2

我的应用程序使用 android api v2 存在问题,因为它无法启动它只会一直说“不幸的是,app_name 已停止工作。”,我已经按照谷歌发布的指南中的每一步,我也在 StackOverflow 中查找了类似的问题并尝试了解决方案,但不幸的是似乎没有一个有效。

我似乎遇到的最大问题之一是

 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.MapFragment"

即使我添加了 Google Play 服务库并将其添加到应用程序项目中。那么问题出在哪里呢?

import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.GoogleMap;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

SupportMapFragment mMap;
GoogleMap googleMap;

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

    mMap = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);

            googleMap = mMap.getMap();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}
4

2 回答 2

1

编辑 --- 我建议您尝试使用Genymotion而不是 eclipse android 模拟器。

但是您可以尝试以下步骤。

如果您已经拥有 API KEY,则可以执行此步骤

步骤1:

配置AndroindManifest.xml:

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

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

    <permission
        android:name="com.br.activitys.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.br.activitys.permission.MAPS_RECEIVE" />
    <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" />    

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
         android:debuggable="true">

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

        <activity> ... </activity>

    </application>

</manifest>

第 2 步: 创建模拟器 4.2.2 API 17

在此处输入图像描述

之后,启动并等待这个完全加载。第 3 步:下载文件https://www.dropbox.com/s/m8p5jsvg9i4l5j3/com.android.vending-20130716.apk e https://www.dropbox.com/s/a90mjl9nhk4qv45/com.google.android。 gms-20130716.apk 使用 ADB 安装它 在 windows 上执行类型 CMD

在此处输入图像描述

提示将打开,您需要访问您的 android 安装文件夹,在我的情况下为 C:\Program Files (x86)\Android\android-sdk\platform-tools

在此处输入图像描述

因此,您将输入 ADB INSTALL 和您下载的文件的路径。 在此处输入图像描述

在此处输入图像描述

这个过程需要一些时间(2或3分钟),不用担心。

之后,您需要重新启动模拟器。

第 4 步: 下载https://www.dropbox.com/s/42bz5imaq4uty4j/google_play_services_9.7z提取文件夹 extra/google 的文件夹 google_play_services insde 非您的 SDK 目录(在我的情况下为 C:\Program Files (x86)\Android\ android-sdk\extras\google),如果该文件夹已经存在,删除并替换为这个新文件夹。现在,将 google_play_services\libproject 中的同一文件夹 google-play-services_lib 复制到您的工作区,并像 eclipse 项目一样导入。文件 -> 导入

在此处输入图像描述

选择 Android -> Existing Android Code Into Workspace

在此处输入图像描述

选择您复制的文件夹

在此处输入图像描述

并完成。

第 5 步: 现在将库添加到您的项目中。右键单击您的项目并转到属性。在 android 中,向下滚动直到 library 并单击 add。

在此处输入图像描述

选择你导入的项目,点击ok

在此处输入图像描述

在此处输入图像描述

可以肯定的是,转到 Project -> Clean 并选择 Clean All Projects

在此处输入图像描述

完成了,现在只需运行您的应用程序。

在此处输入图像描述

于 2013-09-18T17:11:51.667 回答
0

您是在模拟器还是设备上测试您的应用程序。因为 google MapV2 需要安装了 Google play apk 的 Android 设备。

于 2013-03-03T03:45:51.757 回答