找不到从方法glt.a引用的类com.google.android.gms.location.internal.ParcelableGeofence

时间:2014-07-08 07:36:41

标签: android google-maps gps google-maps-android-api-2 google-maps-api-2

我有一个主页是地图的应用程序。

不知道为什么我收到此错误以及此错误Could not find class 'gpr', referenced from method gps.a

我更新了eclipse,所以我尝试使用新的SHA1指纹更改为API密钥。但这不起作用。

我的应用是在您打开应用时显示当前位置。它只是落入整个地图但在LOG猫我得到这些错误。 这是我的Logcat

`07-08 12:54:39.897: I/Google Maps Android API(25749): Google Play services client version: 5077000

 07-08 12:54:39.907: I/dalvikvm(25749): Could not find method guj.a, referenced from method gqi.a

 07-08 12:54:39.907: W/dalvikvm(25749): VFY: unable to resolve static method 24936: Lguj;.a (Landroid/content/Context;)Lgri;

 07-08 12:54:39.907: D/dalvikvm(25749): VFY: replacing opcode 0x71 at 0x0003

 07-08 12:54:39.917: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a

 07-08 12:54:39.917: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps;

 07-08 12:54:39.917: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000

 07-08 12:54:39.927: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a

 07-08 12:54:39.927: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps;

 07-08 12:54:39.927: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000

 07-08 12:54:39.927: E/dalvikvm(25749): Could not find class 'gpr', referenced from method gps.a

 07-08 12:54:39.927: W/dalvikvm(25749): VFY: unable to resolve new-instance 4090 (Lgpr;) in Lgps;

 07-08 12:54:39.927: D/dalvikvm(25749): VFY: replacing opcode 0x22 at 0x0000

 07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0a in Lgps;.a

 07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0c in Lgps;.a

 07-08 12:54:39.937: D/dalvikvm(25749): DexOpt: unable to opt direct call 0x5ea3 at 0x0a in Lgps;.a

 07-08 12:54:39.957: I/Google Maps Android API(25749): Google Play services package version: 5084034

 07-08 12:54:39.977: W/dalvikvm(25749): VFY: unable to resolve static field 20873 (t) in Lyp;

 07-08 12:54:39.977: D/dalvikvm(25749): VFY: replacing opcode 0x62 at 0x000e
 07-08 12:54:39.977: W/dalvikvm(25749): VFY: unable to resolve static field 20873 (t) in Lyp;

 07-08 12:54:39.977: D/dalvikvm(25749): VFY: replacing opcode 0x62 at 0x000d

 07-08 12:54:40.888: I/dalvikvm(25749): Failed resolving Lcom/google/android/gms/location/internal/ParcelableGeofence; interface 4023 'Lgln;'

 07-08 12:54:40.888: W/dalvikvm(25749): Link of class 'Lcom/google/android/gms/location/internal/ParcelableGeofence;' failed

 07-08 12:54:40.898: E/dalvikvm(25749): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method glt.a

 07-08 12:54:40.898: W/dalvikvm(25749): VFY: unable to resolve check-cast 2086 (Lcom/google/android/gms/location/internal/ParcelableGeofence;) in Lglt;

 07-08 12:54:40.898: D/dalvikvm(25749): VFY: replacing opcode 0x1f at 0x0019

 07-08 12:54:41.589: W/ActivityThread(25749): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());`

我试图谷歌周围,似乎没有适当的解决方案,所以如果有人可以帮助我这将是有帮助的。

3 个答案:

答案 0 :(得分:4)

我告诉你我是如何解决你遇到的同样问题的。

首先,我清理了所有sdk,然后又重新下载了Google Play Services lib。然后我删除了我的计算机的.android文件夹,并重新生成了我的debug.keystore。

之后,我只是获取新的SHA1以获取我的Google Maps V2 Api Key。

更新我的apikey后,让我们看看如何更改代码。

现在我在你的xml布局中使用带有MapView的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=".MapsActivity" >

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</RelativeLayout> 

并使用FragmentManager找到它:

    public class MapsActivity extends Activity
{
    private GoogleMap map;

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

        // Gets the MapView from the XML layout and creates it
        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        map.getUiSettings().setMyLocationButtonEnabled(false);
        //map.setMyLocationEnabled(true);
        map.setOnMapClickListener(this);
        map.setOnMapLongClickListener(this);
        try 
        {
            MapsInitializer.initialize(MapsActivity.this);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }

我希望如果我的英语非常糟糕,那会很有帮助 问候

答案 1 :(得分:1)

我在7月升级到API级别23后遇到了同样的问题(使用客户端google-play-service_lib 5.0.77)。

在测试设备上将Google Play服务更新为最新版本(6.1.09)后问题得以解决。

因此,由于设备/模拟器上的Google Play服务版与项目中的客户端库API(google-play-service_lib)不兼容,似乎一直是(特定于设备的问题)。

根据Google的文档,当客户端比服务更新时,客户端库API应该解决过时的服务apk问题; (在这种情况下确实如此,因为问题并没有真正影响发布的apk)https://developer.android.com/google/play-services/index.html

我之前尝试使用新的API密钥解决此问题,并且按照此问题和其他类似问题的建议,全新安装的Eclipse / ADT / SDK / google-play-service_lib无效。

答案 2 :(得分:0)

你可以发布你的清单吗?当然是Sans API密钥。

您的日志与我最近遇到的问题看起来几乎相同,通过在清单中添加以下内容来解决此问题:

 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

我正在研究一个正在访问地图的应用程序,然后突然停止了。我看不到任何指向失踪许可的东西;当我将清单与另一个使用map api v2的应用程序进行比较时,我才接受它。

我仍然感到困惑,为什么它之前没有它(谷歌说你需要地图的工作许可)。也许我曾经把它放在那里并且意外地删除了这条线,但无论是哪种方式都把它修好了。

来源: https://developers.google.com/maps/documentation/business/mobile/android/config