3

我的项目在 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

和我的** 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
#proguard.config=proguard.cfg
# Project target.
target=Google Inc.:Google APIs:11
android.library.reference.1=../Library1
android.library.reference.2=../Library2

请分享您的想法。

谢谢你。

4

3 回答 3

0

BINDER TRANSACTION 失败通常发生在您溢出 Binder 进程时。如果您没有在启动页面上使用大位图(这是绑定器事务失败的最常见原因),那么它可能是ParcelFormatException,因为我注意到您正在尝试在您的 apk 中使用 Parcelable。

于 2013-07-03T23:09:44.903 回答
0

我想您正在使用发布密钥签署此版本。如果您的手机上安装了旧版本(带有调试密钥),请先将其卸载。(您的设备上不能有具有两个不同签名的同一个应用程序)

于 2013-02-11T10:39:02.520 回答
0

假设您使 ADT 保持最新状态..

如果您正在使用 Eclipse 导出构建应用程序的发布版本,它将proguard.configproject.properties.

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

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

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

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

并使用重新安装:

adb install App-release.apk

如果它给出了关于兼容性的错误,我通过-k从卸载命令中排除开关来丢弃以前的应用程序数据:

adb shell pm uninstall com.*example*.*app*
于 2013-07-24T20:58:17.197 回答