在android中启用proguard时,应用程序不工作

在android中启用proguard时,应用程序不工作,android,proguard,Android,Proguard,我的项目在android设备和仿真器上运行良好 但是,如果我在启用proguard应用程序后导出并获取.apk文件,我将无法使用proguard安装此.apk文件 我的假设是,安装.apk文件时没有调用服务,并且我的日志中没有任何错误 请分享你的想法 这是我的proguard文件。 -optimizationpasses 5 -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify

我的项目在android设备和仿真器上运行良好

但是,如果我在启用proguard应用程序后导出并获取.apk文件,我将无法使用proguard安装此.apk文件

我的假设是,安装.apk文件时没有调用服务,并且我的日志中没有任何错误

请分享你的想法

这是我的proguard文件。

-optimizationpasses 5
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-dontoptimize
# -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-libraryjars /usr/local/android-sdk/add-ons/google_apis-7_r01/libs/maps.jar

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepattributes JavascriptInterface

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
    }
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-keep class mypackage.MyCallbackClass {
    void myCallbackMethod(java.lang.String);
}

-dontwarn android.support.**
-dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry
请分享你的想法


谢谢。

我想您是用发行密钥在这个版本上签名的。
如果您的手机上有旧版安装(带有调试密钥),请先卸载。(您的设备上不能有两个不同签名的同一个应用)

失败的活页夹事务通常在活页夹进程溢出时发生。如果您的启动页上没有使用大型位图(这是活页夹事务失败的最常见原因),那么可能是因为我注意到您试图在apk中使用一个包裹。

假设您保持ADT最新

如果您使用Eclipse导出构建应用程序的发布版本,它将从
project.properties
中的
Proguard.config
属性指定的文件中加载Proguard设置

如果您使用的是
ant release
,它将从
ant.properties
中的
Proguard.config
属性指定的文件加载Proguard设置

也就是说,您在构建过程中是否收到任何类型的错误或警告?这些在诊断Proguard时特别有用,因为它的目的是删除它认为应用程序没有使用的类和方法

我使用以下方法卸载我的应用程序:

adb shell pm uninstall -k com.*example*.*app*
并使用以下方式重新安装:

adb install App-release.apk
如果它给出了一个关于兼容性的错误,我将通过从uninstall命令中排除
-k
开关来丢弃以前的应用程序数据:

adb shell pm uninstall com.*example*.*app*

谢谢你的回复,文斯。我是通过命令提示符使用“adb uninstall myProject.apk”从我的设备上卸载应用程序的。但在启动启动页面时遇到了问题。现在,我可以在日志中查看此错误“!!!活页夹事务失败!!!”。
adb shell pm uninstall com.*example*.*app*