我已经在Scala和Android上使用Scala 2.7.3 final 跟踪了该教程。最终的Android应用程序可以运行,但是即使是最基本的应用程序也要花费几分钟(!)进行编译,并且需要900 kb的压缩率,这对于移动应用程序来说是一个停滞点。此外,IDE有时会耗尽内存。我认为dex
不是针对像这样的大型图书馆scala-library
。
- 所以我的问题是:有没有人真正做到过这一点,有没有解决办法?
我已经在Scala和Android上使用Scala 2.7.3 final 跟踪了该教程。最终的Android应用程序可以运行,但是即使是最基本的应用程序也要花费几分钟(!)进行编译,并且需要900 kb的压缩率,这对于移动应用程序来说是一个停滞点。此外,IDE有时会耗尽内存。我认为dex
不是针对像这样的大型图书馆scala-library
。
Answers:
我已经在Scala中编写了一些基本的Android应用程序,没有什么史诗性的。我不是Java程序员,建议我使用“ treeshake”,一位朋友向我解释说,这会从jar文件中删除所有不必要的库。
我没有记录它,但是我发现其他人已经有:
http://chneukirchen.org/blog/archive/2009/04/programming-for-android-with-scala.html
Proguard并非唯一的解决方案,您可能会找到适合您的工作流程或更适合您的环境的解决方案。
另外,谷歌刚刚意识到JACK,它可以极大地减少构建和存储时间,请参阅https://source.android.com/source/jack.html
您现在可以使用Gradle的Android插件在Scala中创建Android应用程序。它集成了ProGuard工具,可将生成的APK文件中的脂肪修剪掉,因此似乎可以满足您的需求。
还有一个基于Scala的构建器sbt 的插件:sbt-android-plugin。
有关教程和示例,另请参见StéphaneMicheloud的“探索Android”页面:http ://lamp.epfl.ch/~michelou/android/
我使用Eclipse 3.7,Scala 2.10和插件AndroidProguardScala v50验证了此详细的解决方案:
https://stackoverflow.com/a/11084146/1287856
一切正常。具有标称主要活动级别的简单测试应用程序仅需38Kb。支持图书馆项目。导出项目时会激活Proguard。
为Scala开发Android应用的过程正在不断发展。SBT认为,目前最好的方法是与 android-sdk-plugin在我的Scala / Android项目中得到了维护,*对我来说效果很好。还可以找到一个最近的示例,该示例演示了已在上述Scaloid中使用此插件的方法。
请注意,该问题是Stack Overflow上答案过期的典型问题示例。这个答案在某些时候也可能会过时。
*在此回答线程中提及的其他基于SBT的项目在撰写本文时的最后六个月似乎没有为其编写代码。他们可能与较新版本的Scala和SBT有兼容性问题。
如果您使用Maven,请使用android-scala-test作为启动模板。开箱即用对我来说很棒。
Scaloid是用Scala编写的Android API包装器,可帮助您以Scala风格编写Android程序。
您可以在没有SBT的Android上使用Scala,Scala由Gradle在外部构建,可以创建Android应用程序。 https://github.com/yareally/android-scala-intellij-no-sbt-plugin
Gradle比SBT更适用于android。
有一个很好的Scala客户端和服务器端解决方案概念示例,以及作为IntelliJ IDEA工作台的高级工具而构建的gradle构建工具。
核心类在客户端和服务器中很常见,这是一大进步。
https://github.com/ghik/akkdroid
IDEA和android-plugin的好教程:http : //fxthomas.github.io/android-plugin/
Android上Scala的最大问题是编译时间。
可能是因为Proguard类剥离功能在具有8GB的双四核(8-CPU)E5450 Xeon上使用IDEA13 / Scala插件进行编译可能需要两分钟或更长时间。
由于编译时间太令人沮丧,我在完成了一个比较大的Scala Android项目后才回到Java。