【问题标题】:(ClassNotFoundException/Android) Proguard removing rome dex on release build. Is it proguard?(ClassNotFoundException/Android) Proguard 在发布版本中删除 rome dex。是proguard吗?
【发布时间】:2021-11-22 10:57:23
【问题描述】:

我有一个使用 Rome for rss 的 Android 项目,在使用调试版本时效果很好(请参阅下文)。但是当我切换到发布时,它给了我:

java.lang.ClassNotFoundException: Didn't find class "com.rometools.rome.feed.synd.impl.ConverterForAtom10" on path: DexPathList[[zip file "/data/app/~~KaWHVUAFHxJthThQtBTQVg==/com.theredspy15.thanelocker-Yv1ajdDGETGskLhAp9OAmw==/base.apk"],nativeLibraryDirectories=[/data/app/~~KaWHVUAFHxJthThQtBTQVg==/com.theredspy15.thanelocker-Yv1ajdDGETGskLhAp9OAmw==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)

随着:

java.lang.ClassNotFoundException: com.rometools.rome.feed.synd.impl.ConverterForAtom10

错误中还提到了这一行:

feed = input.build(new XmlReader(new URL(url)));

我的构建类型:(通常启用 minify 并且 debug 为 false)

debug {
            minifyEnabled false
            shrinkResources false
            debuggable true
            signingConfig signingConfigs.debug
        }

release {
            minifyEnabled false
            shrinkResources true
            debuggable true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

我最好的猜测是 proguard 正在删除不应该删除的内容。我在 android studio 中使用默认的 proguard 规则文件。一切都是最新版本,如果它与 proguard 规则有关,我不知道如何让 Rome 在这种情况下在调试和发布构建类型上工作

【问题讨论】:

  • 不熟悉这个库,但您可以将其添加到您的 proguard 规则(如果启用了 minify)以保留该包。 -keep class com.rometools.rome.** { *; }

标签: java android gradle proguard rome


【解决方案1】:

下面的 -keep 选项应该可以解决问题,它可以防止 ProGuard 删除类并重命名它。之后您可能会看到不同类和方法出现类似问题,您还需要为它们添加 -keep 选项。

-keep class com.rometools.rome.feed.synd.impl.ConverterForAtom10

在创建这些 -keep 选项时尽量不要使用过多的通配符,这将允许 ProGuard 更好地缩小、优化和混淆代码。您可以使用 ProGuard Playground 以直观的方式查看 -keep 规则的影响。

【讨论】:

    猜你喜欢
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多