【问题标题】:Class not found when unmarshalling: com.google.android.gms.auth.firstparty.shared.PACLConfig解组时找不到类:com.google.android.gms.auth.firstparty.shared.PACLConfig
【发布时间】:2014-05-22 13:06:01
【问题描述】:

我已经复制了这个示例应用程序https://github.com/googledrive/android-demos

我按照创建SHA1的所有说明,在Google developer console中正确设置。

我在使用 google play services 时遇到了一些问题(我认为它正在停止),为了解决它,我右键单击了 app > Android tools > Export Signed application package

我安装在我的Samsung phone 中。当我启动它时,它要求我选择一个Gmail 帐户,我照做了。然后我从ListView中选择了Create a folder, 消息Signing in...This can take a few minutes 出现并且永远无法成功登录。差不多30多分钟了,还在继续。

我检查了Eclipse 中的Logcat,我有以下日志。 如何解决?

05-22 21:38:54.677: E/Parcel(2395): Class not found when unmarshalling: com.google.android.gms.auth.firstparty.shared.PACLConfig
05-22 21:38:54.677: E/Parcel(2395): java.lang.ClassNotFoundException: com.google.android.gms.auth.firstparty.shared.PACLConfig
05-22 21:38:54.677: E/Parcel(2395):     at java.lang.Class.classForName(Native Method)
05-22 21:38:54.677: E/Parcel(2395):     at java.lang.Class.forName(Class.java:204)
05-22 21:38:54.677: E/Parcel(2395):     at java.lang.Class.forName(Class.java:169)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Parcel.readParcelableCreator(Parcel.java:2091)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Parcel.readParcelable(Parcel.java:2055)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Parcel.readValue(Parcel.java:1971)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Parcel.readMapInternal(Parcel.java:2255)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Bundle.unparcel(Bundle.java:223)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Bundle.getString(Bundle.java:1082)
05-22 21:38:54.677: E/Parcel(2395):     at android.content.Intent.getStringExtra(Intent.java:4961)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3784)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:5008)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3423)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3315)
05-22 21:38:54.677: E/Parcel(2395):     at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258)
05-22 21:38:54.677: E/Parcel(2395):     at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2122)
05-22 21:38:54.677: E/Parcel(2395):     at android.os.Binder.execTransact(Binder.java:388)
05-22 21:38:54.677: E/Parcel(2395):     at dalvik.system.NativeStart.run(Native Method)
05-22 21:38:54.677: E/Parcel(2395): Caused by: java.lang.NoClassDefFoundError: com/google/android/gms/auth/firstparty/shared/PACLConfig
05-22 21:38:54.677: E/Parcel(2395):     ... 19 more
05-22 21:38:54.677: E/Parcel(2395): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.firstparty.shared.PACLConfig" on path: .
05-22 21:38:54.677: E/Parcel(2395):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64)
05-22 21:38:54.677: E/Parcel(2395):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-22 21:38:54.677: E/Parcel(2395):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)

Manifest.xml

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

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

【问题讨论】:

  • 您是否在代码中使用Proguard 或任何混淆工具?请检查您的应用程序中的project.properties 文件?
  • @manitoba:是的,我正在使用 proguard 并且 project.properties 具有以下代码:# 项目目标。 target=Google Inc.:Google APIs:17 android.library.reference.1=../google-play-services_lib 那我该怎么办?
  • 您是否安装了 Google Play 服务 SDK? developer.android.com/google/play-services/setup.html
  • @EricKoleda 是的,我确实安装了它。我一直将它用于我的其他位置应用程序。

标签: android google-drive-api google-drive-android-api


【解决方案1】:

当您使用proguard 混淆您的代码时,请将以下异常添加到您的proguard file

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

【讨论】:

  • 是的,我的 proguard 文件中有这些。正如我所提到的,这个示例应用程序称为 Google Drive Android Demos,可以在 link 找到,我只是不知道现在该做什么。它也发生在链接中提到的所有这些样本中......非常令人沮丧。如果您能提出一个解决方案,我将非常感激(我已经在回复中表示感谢),即使谷歌搜索也无法显示任何内容。这是一个新问题...谢谢
  • 有什么帮助吗?
  • 你能在不启用 proguard 的情况下尝试编译它吗?
  • 不走运。屏幕显示“正在登录...这可能需要几分钟”...日志显示的内容与我发布的内容相同...
  • 我在尝试连接时一直在查看日志。我注意到以下内容,它是关于 Token 的。也许 Google 的说明中缺少某些内容:05-30 19:42:54.450: E/Parcel(2399): Caused by: java.lang.NoClassDefFoundError: com/google/android/gms/auth/firstparty/dataservice/ TokenRequest 05-30 19:42:54.450: E/Parcel(2399): ... 18 更多 05-30 19:42:54.450: E/Parcel(2399): 引起: java.lang.ClassNotFoundException: 没有在路径上找到类“com.google.android.gms.auth.firstparty.dataservice.TokenRequest”:
猜你喜欢
  • 1970-01-01
  • 2017-06-21
  • 2021-01-30
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 2020-10-03
  • 2014-04-23
相关资源
最近更新 更多