我已经在Scala和Android上使用了Scala 2.7.3 final 的教程.由此产生的Android应用程序可以工作,但即使是最基本的应用程序也需要几分钟(!)来编译,需要900 kb压缩,这是移动应用程序的显示阻止.此外,IDE时不时会耗尽内存.我认为dex不适合像这样的大型图书馆scala-library.
我最近采用了一种使用Scala和Eclipse进行Android编程的方法,它可以在不使用Proguard或Treeshake的情况下减少代码和编译时间.
在本文之后,我应该能够使用最后的Eclipse构建(3.7),几乎是在仿真器版本10上更新的Scala(2.8.1)的最新版本,在Eclipse中的版本2.8.3以及提供的插件.
提出的方法是提供一个特定的ramdisk映像版本,我们可以在其中上传scala库,这会大大缩小要上传到模拟器的代码的大小.
我按照步骤,创建了一个hello world,添加了scala本质,添加了一个虚拟scala类,在Android Package Installer之前移动了Scala构建器,一切都构建完美,但是当我在Eclipse的模拟器上启动apk时,应用程序崩溃了我收到以下错误,看起来与此处提供的 相同(在文档末尾):
03-29 10:29:38.505: E/AndroidRuntime(839): java.lang.NoClassDefFoundError: upg.TestSinceInstallation.ComputeSum
Run Code Online (Sandbox Code Playgroud)
如果我删除活动文件中的scala引用,它运行良好.
这是TestSinceInstallation.java文件:
package upg.TestSinceInstallation;
import android.app.Activity;
import android.os.Bundle;
import upg.TestSinceInstallation.ComputeSum;
public class TestSinceInstallationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int a = 1;
int b = 5;
ComputeSum cs = new ComputeSum(a, b);
if(cs.getResut() == 6) {
setContentView(R.layout.main);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是ComputeSum.scala文件
package upg.TestSinceInstallation
class ComputeSum(a: Int, b: Int) …Run Code Online (Sandbox Code Playgroud)