Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM

Posted

技术标签:

【中文标题】Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM【英文标题】:Proguard crashes on Scala code depending on Multiverse STM 【发布时间】:2011-12-25 18:33:59 【问题描述】:

我正在尝试使用 Proguard 优化一些依赖于 Multiverse STM (0.6.2) 的 Scala 代码。我将 STM 与 akka 结合使用。当我尝试这样做时,我收到以下错误:

Unexpected error while inlining subroutines:
    Class       = [org/multiverse/transactional/refs/BasicRef]
    Method      = [<init>()V]
    Exception   = [java.lang.ArrayIndexOutOfBoundsException] (-1)

我正在使用以下标志进行优化:

-forceprocessing

-libraryjars $java.home/lib/rt.jar
-injars      $jar.name
-outjars     $jar.opt.name

-dontobfuscate

-dontnote
-dontwarn
-ignorewarnings
-keepattributes

-keepclasseswithmembers public class * 
    public static void main(java.lang.String[]);

你知道解决这个问题的方法吗(除了明显的 -dontoptimize 之外)?

提前致谢!

【问题讨论】:

【参考方案1】:

在尝试解决同样的问题时,在 proguard 上浪费了更多时间后,我切换到一个罐子 (https://github.com/retronym/sbt-onejar) 并且第一次使用它。我建议除非你需要从 proguard 获得特定的东西(收缩、字节码混淆),否则只使用一个罐子。

每当我必须配置 proguard 时,我都会发现自己陷入了一场战斗。通常在配置 sbt 时,我也发现自己陷入了一场战斗。把它们放在一起,那就麻烦了。

祝你好运。 -安迪

【讨论】:

以上是关于Proguard 在 Scala 代码上崩溃,具体取决于 Multiverse STM的主要内容,如果未能解决你的问题,请参考以下文章

使用 Scala 编写的库在 Android 应用上运行 Proguard

将scala代码打包到一个jar文件中,proguard不起作用

尝试使用 ProGuard 优化 Java+Scala 时出现 java.lang.***Error

了解启用 Proguard 的崩溃和 ANR

当我在 GSON(使用枚举)上运行 Proguard 时应用程序崩溃

无法在 Firebase 上上传 proguard 映射文件