使用Proguard构建Android APK并获取类not found异常

使用Proguard构建Android APK并获取类not found异常,android,proguard,Android,Proguard,我一直在尝试用proguard创建一个Android APK。该应用程序在安装时可以工作,但当它试图使用com.google.android.gms.common.images.ImageManager中的对象时,就会抛出以下异常。我正在尝试将这个类用于Google Play游戏服务 07-23 01:01:32.382: E/Parcel(615): Class not found when unmarshalling:com.google.android.gms.common.ima

我一直在尝试用proguard创建一个Android APK。该应用程序在安装时可以工作,但当它试图使用com.google.android.gms.common.images.ImageManager中的对象时,就会抛出以下异常。我正在尝试将这个类用于Google Play游戏服务

07-23 01:01:32.382: E/Parcel(615): Class not found when     unmarshalling:com.google.android.gms.common.images.ImageManager$b, e: java.lang.ClassNotFoundException: com.google.android.gms.common.images.ImageManager$b
07-23 01:01:32.387: E/AndroidRuntime(615): FATAL EXCEPTION: main
07-23 01:01:32.387: E/AndroidRuntime(615): java.lang.RuntimeException: Unable to start receiver com.google.android.gms.common.images.ImageBroadcastReceiver: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.common.images.ImageManager$b
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2287)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.app.ActivityThread.access$1600(ActivityThread.java:140)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1313)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Looper.loop(Looper.java:137)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.app.ActivityThread.main(ActivityThread.java:4938)
07-23 01:01:32.387: E/AndroidRuntime(615):  at java.lang.reflect.Method.invokeNative(Native Method)
07-23 01:01:32.387: E/AndroidRuntime(615):  at java.lang.reflect.Method.invoke(Method.java:511)
07-23 01:01:32.387: E/AndroidRuntime(615):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
07-23 01:01:32.387: E/AndroidRuntime(615):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
07-23 01:01:32.387: E/AndroidRuntime(615):  at dalvik.system.NativeStart.main(Native Method)
07-23 01:01:32.387: E/AndroidRuntime(615): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.common.images.ImageManager$b
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Parcel.readParcelable(Parcel.java:2077)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Parcel.readValue(Parcel.java:1965)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Parcel.readMapInternal(Parcel.java:2226)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Bundle.unparcel(Bundle.java:223)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.os.Bundle.getParcelable(Bundle.java:1165)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.content.Intent.getParcelableExtra(Intent.java:4489)
07-23 01:01:32.387: E/AndroidRuntime(615):  at com.google.android.gms.common.images.ImageBroadcastReceiver.onReceive(SourceFile:21)
07-23 01:01:32.387: E/AndroidRuntime(615):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2280)
07-23 01:01:32.387: E/AndroidRuntime(615):  ... 10 more
在proguard-project.txt中,我有以下内容,但仍然不够好:

-keep class com.google.android.gms.common.images.** { *; }
#Google Play service
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}
以下是project.properties文件,以防万一:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems. 
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available 

properties: sdk.dir, user.home):
proguard.config=${sdk.dir}\\tools\\proguard\\proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library.reference.1=../android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
你看到这个了吗

前进问题

如果您正在使用Proguard,并且在模糊的APK上看到错误, 检查AndroidManifest.xml上的目标API级别。确保 将其设置为17或更高


在您的proguard文件中添加
-dontwarn com.google.android.gms.*

谢谢您的建议。我将android:targetSdkVersion=“17”改为17,但图像管理器仍然存在问题。这似乎是Google Play Game服务的jar文件的问题。我从第8版抓起一个罐子,proguard开始工作。很奇怪。