在启用proguard后,发布apk不起作用,也无法调试 [英] Release apk not working after enabling proguard, not able to debug too

查看:183
本文介绍了在启用proguard后,发布apk不起作用,也无法调试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以在设备中安装该应用,但是该应用没有连接到服务器。我也无法调试发布apk。当我禁用proguard,应用程序连接到服务器,我也可以调试发布apk。我试过使用proguard版本4.7,4.9和5.2.1。我的Android版本是19,我的工具版本是20.我正在使用eclipse。

I am able to install the app in the device, but the app is not connecting to server . I am unable to debug the release apk too. When I disable proguard, the app gets connected to the server and I am able to debug the release apk too. I tried using proguard versions 4.7,4.9 and 5.2.1 . My Android version is 19 and my tools version is 20. I am using eclipse.

我以前在发行版中已经成功使用了proguard 4.9。在我以前的发行版中,我对代码进行了两个重大修改。我升级了谷歌播放服务,并使用jarjar修剪它,我将sdk工具升级到版本21,然后由于一些问题降级到版本20。

I have successfully used proguard 4.9 in my previous release to production.After my previous release to production, I had made two major changes to my code . I upgraded google-play-services and used jarjar to trim it and I upgraded the sdk tools to version 21 and then downgraded to version 20 due to some issues.

我想知道我可以尝试找出当我启用proguard时出了什么问题。从LogCat中选出的似乎相关的内容如下:

I would like to know what all I can try to figure out what is going wrong when I enable proguard . Something that seemed relevant that I picked from LogCat is below :

07-29 14:31:05.835: W/System.err(17696): java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.reflect.Type[]   java.lang.reflect.ParameterizedType.getActualTypeArguments()' on a null object reference
07-29 14:31:05.835: W/System.err(17696):    at com.google.api.client.util.Types.java.lang.reflect.ParameterizedType getSuperParameterizedType(java.lang.reflect.Type,   java.lang.Class)(Types.java)
     boolean isAssignableToOrFrom(java.lang.Class,java.lang.Class)(Types.java)
     java.lang.Object newInstance(java.lang.Class)(Types.java)
    IllegalArgumentException handleExceptionForNewInstance(java.lang.Exception,java.lang.Class)(Types.java)
    boolean isArray(java.lang.reflect.Type)(Types.java)
    java.lang.Class getRawClass(java.lang.reflect.ParameterizedType)(Types.java)
    reflect.Type getBound(java.lang.reflect.WildcardType)(Types.java)
    resolveTypeVariable(java.util.List,java.lang.reflect.TypeVariable)(Types.java)
    Class getRawArrayComponentType(java.util.List,java.lang.reflect.Type)(Types.java)
    reflect.Type getActualParameterAtPosition(java.lang.reflect.Type,java.lang.Class,int)(Types.java)
    Iterable iterableOf(java.lang.Object)(Types.java)
    Object toArray(java.util.Collection,java.lang.Class)(Types.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.util.Types.java.lang.reflect.Type getIterableParameter(java.lang.reflect.Type)(Types.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.http.HttpHeaders.com.google.api.client.http.HttpHeaders clone()(HttpHeaders.java)
    set(java.lang.String,java.lang.Object)(HttpHeaders.java)
    setAcceptEncoding(java.lang.String)(HttpHeaders.java)
    setAuthorization(java.util.List)(HttpHeaders.java)
    setContentLength(java.lang.Long)(HttpHeaders.java)
    void addHeader(java.util.logging.Logger,java.lang.StringBuilder,java.lang.StringBuilder,com.google.api.client.http.LowLevelHttpRequest,java.lang.String,java.lang.Object,java.io.Writer)(HttpHeaders.java)
    java.lang.String toStringValue(java.lang.Object)(HttpHeaders.java)
    void serializeHeaders(com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.lang.StringBuilder,java.util.logging.Logger,com.google.api.client.http.LowLevelHttpRequest)(HttpHeaders.java)
    serializeHeadersForMultipartRequests(com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.util.logging.Logger,java.io.Writer)(HttpHeaders.java)
    com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.lang.StringBuilder,java.util.logging.Logger,com.google.api.client.http.LowLevelHttpRequest,java.io.Writer)(HttpHeaders.java)
    fromHttpResponse(com.google.api.client.http.LowLevelHttpResponse,java.lang.StringBuilder)(HttpHeaders.java)
    fromHttpHeaders(com.google.api.client.http.HttpHeaders)(HttpHeaders.java)
    parseHeader(java.lang.String,java.lang.String,com.google.api.client.http.HttpHeaders$ParseHeaderState)(HttpHeaders.java)
    java.lang.Object parseValue(java.lang.reflect.Type,java.util.List,java.lang.String)(HttpHeaders.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.http.HttpHeaders.com.google.api.client.http.HttpHeaders clone()(HttpHeaders.java)
    set(java.lang.String,java.lang.Object)(HttpHeaders.java)
    setAcceptEncoding(java.lang.String)(HttpHeaders.java)
    setAuthorization(java.util.List)(HttpHeaders.java)
    setContentLength(java.lang.Long)(HttpHeaders.java)
    void addHeader(java.util.logging.Logger,java.lang.StringBuilder,java.lang.StringBuilder,com.google.api.client.http.LowLevelHttpRequest,java.lang.String,java.lang.Object,java.io.Writer)(HttpHeaders.java)
    java.lang.String toStringValue(java.lang.Object)(HttpHeaders.java)
    void serializeHeaders(com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.lang.StringBuilder,java.util.logging.Logger,com.google.api.client.http.LowLevelHttpRequest)(HttpHeaders.java)
    serializeHeadersForMultipartRequests(com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.util.logging.Logger,java.io.Writer)(HttpHeaders.java)
    com.google.api.client.http.HttpHeaders,java.lang.StringBuilder,java.lang.StringBuilder,java.util.logging.Logger,com.google.api.client.http.LowLevelHttpRequest,java.io.Writer)(HttpHeaders.java)
    fromHttpResponse(com.google.api.client.http.LowLevelHttpResponse,java.lang.StringBuilder)(HttpHeaders.java)
    fromHttpHeaders(com.google.api.client.http.HttpHeaders)(HttpHeaders.java)
    parseHeader(java.lang.String,java.lang.String,com.google.api.client.http.HttpHeaders$ParseHeaderState)(HttpHeaders.java)
    java.lang.Object parseValue(java.lang.reflect.Type,java.util.List,java.lang.String)(HttpHeaders.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.http.HttpResponse.void <init>(com.google.api.client.http.HttpRequest,com.google.api.client.http.       LowLevelHttpResponse)(HttpResponse.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.http.HttpRequest.com.google.api.client.http.HttpResponse execute()(HttpRequest.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.com.google.api.client.http.HttpResponse                executeUnparsed(boolean)(AbstractGoogleClientRequest.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.com.google.api.client.http.HttpResponse            executeUnparsed()(AbstractGoogleClientRequest.java)
07-29 14:31:05.836: W/System.err(17696):    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.java.lang.Object execute()(    AbstractGoogleClientRequest.java)
07-29 14:31:05.836: W/System.err(17696):    


推荐答案

您的Proguard配置是inc对于刚刚改变的两件事之一, Google Play服务详情请此处。他们声明您需要添加以下ProGuard配置:

Your Proguard configuration is incorrect for one of the two things you just changed. Google Play Services details are here. They state you need to add the following ProGuard configs:


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

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

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

-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 @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; }

--keepnames类*实现android.os.Parcelable {
public static final ** CREATOR; }

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

这篇关于在启用proguard后,发布apk不起作用,也无法调试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆