【发布时间】:2011-12-03 23:35:08
【问题描述】:
在遇到与 Android 命令行工具集的排列一样多的问题后,我终于设法将 Scala 和 Java 源代码的混合编译成一个可用的 apk。
正如许多人建议的那样,我使用proguard 通过dex 工具来压缩Scala 库。问题是这样的:
BUILD SUCCESSFUL
Total time: 1 minute 29 seconds
一分半钟。我们在这里讨论的是具有 Hello-World 复杂性的应用程序。我不认为我可以那样发展。我需要参加冥想课程。
这是proguard 配置:
-injars ${out.absolute.dir}/classes:${scala-library.jar}(!META-INF/MANIFEST.MF,!library.properties)
-outjars ${out.absolute.dir}/classes.min.jar
-libraryjars ${android.jar}
-dontwarn
-dontoptimize
-dontobfuscate
-keep public class * extends android.app.Activity
有没有办法加快proguard步骤?
编辑:我在一个相当不错的双核、3GB 内存机器上运行它,在 64 位 Linux 之上。 ant compile (scalac/javac) 的运行需要 3 秒。如上所述,完整的ant install 需要 1:30。根据输出,这是“冻结”的proguard 步骤,很可能是因为 scala/android 运行时库的大小。
【问题讨论】:
-
我们需要更多细节,例如您的机器设置..即 cpu、ram 等的数量。
-
假设编译器会成为你使用的编译器的瓶颈?
-
另见:proguard.sourceforge.net/manual/examples.html#scala。我认为这不是编译器的瓶颈,而是 8.5 Mb 的 scala 运行时需要相当长的时间来读取和打包。
-
您不需要在测试运行中执行 proguard 步骤。只要模拟器可以处理大尺寸,您也可以避免使用 proguard 进行测试。
-
@Daniel - 遗憾的是,proguard 始终是必需的 - 库太大而无法适应 Dalvik 的“dex”文件格式 :-( 这对于模拟器和真实设备一样适用。而且您应该知道 2.9.1 根本没有明智的解决方案 :-( 请参阅 groups.google.com/group/scala-debate/browse_thread/thread/… 了解原因。