gpt4 book ai didi

android - 使用 ProGuard 和 Android 应用程序时重复资源

转载 作者:搜寻专家 更新时间:2023-11-01 07:37:30 25 4
gpt4 key购买 nike

我正在尝试将 ProGuard 与我的一个应用程序一起使用,比方说 A。该应用程序包含另一个应用程序作为库(比方说 B)。这是我的混淆文件。

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-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

-keepclasseswithmembernames class * {
native <methods>;
}

-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 *;
}

-injars bin/classes
-libraryjars lib

当我第一次执行它时,出现了以下错误:

 Proguard returned with error code 1. See console
[2012-01-05 12:18:55 - BSabadellHC-Entrega] Note: there were 1059 duplicate class definitions.
[2012-01-05 12:18:55 - BSabadellHC-Entrega] java.io.IOException: Can't write [/private/var/folders/19/321lw_654pzdqr8y34ysvsx80000gn/T/android_7971378611269030364.jar] (Can't read [/private/var/folders/19/321lw_654pzdqr8y34ysvsx80000gn/T/android_1457478862713006376.jar] (Duplicate zip entry [com/ideaknowing/labs/android/ikarengine/e.class == android_1457478862713006376.jar:com/ideaknowing/labs/android/ikarengine/R$anim.class]))

对我来说相关的部分是:

  • 有重复的对象
  • 他们应该因为 R 文件。控制台说R$anim中有重复的资源(当然,因为应用A和库B都包含动画,布局等)。

所以我的想法显然是从 ProGuard 中排除 R 文件,为此我包含了以下代码行:

-keep public class net.firsrproject.android.R
-keep public class com.ideaknowing.labs.android.ikarengine.R

尽管如此,我仍然遇到相同的错误(所以我猜这些文件仍包含在 Proguard 中)。有人有从 ProGuard 中删除 R 文件的经验吗?关于如何消除此错误,有什么提示或建议吗?

谢谢,问候

最佳答案

如果您使用的是 android 库项目,请删除 -injars bin/classes,因为库中的类文件会使用此选项处理两次(这对我来说与 this 结合使用)。

如果上述方法不起作用,请尝试使用 -dontnote 选项。

关于android - 使用 ProGuard 和 Android 应用程序时重复资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com