如何在Android下使用Akka项目

时间:2013-04-04 23:19:24

标签: android eclipse scala akka

此刻我有点绝望。我正试图在Android(在Eclipse中)使用Akka项目(用scala编写),但无论我尝试什么,我都无法使它工作。
为简单起见,我创建了两个项目:一个Akka项目,使用sbt eclipse创建然后导入到eclipse,以及一个使用项目创建向导的标准android项目。我可以从android代码中引用Akka代码,但在运行时我总是得到NoClassDefFoundError 我真的很感激,如果有人可以指出我做错了什么,或者我一般可以在我的Android应用程序中使用我的Akka项目。

2 个答案:

答案 0 :(得分:1)

我感觉到你的痛苦。我花了小时试图让sbt,proguard,scala,akka工作,并建议你从这里看看项目/ Build.scala:

https://github.com/fehguy/swagger-for-the-home/tree/master/android

特别是proguard选项:

proguardOption in Android :=
  """
    |-dontwarn scala.**
    |-keepclassmembers class * {
    |    ** MODULE$;
    |}
    |-keep class scala.collection.SeqLike {
    |    public protected *;
    |}
    |-keep public class * extends android.app.Activity
    |-keep public class * extends android.app.Application
    |-keep public class * extends android.app.Service
    |-keep public class * extends android.content.BroadcastReceiver
    |-keep public class * extends android.content.ContentProvider
    |-keep public class * extends android.app.backup.BackupAgentHelper
    |-keep public class * extends android.preference.Preference
    |-keep public class com.android.vending.licensing.ILicensingService
    |-keep public class org.eatbacon.sfth.AnalogUpdateActivity
    |-keep public class org.eatbacon.sfth.UpdateDataTask
    |-keep public class org.eatbacon.sfth.ShowChartActivity
    |
    |-keepclasseswithmembernames class * {
    |    native <methods>;
    |}
    |
    |-keepclasseswithmembernames class * {
    |    public <init>(android.content.Context, android.util.AttributeSet);
    |}
    |
    |-keepclasseswithmembernames class * {
    |    public <init>(android.content.Context, android.util.AttributeSet, int);
    |}
    |
    |-keepclassmembers enum * {
    |    public static **[] values();
    |    public static ** valueOf(java.lang.String);
    |}
    |
    |-keep class * implements android.os.Parcelable {
    |  public static final android.os.Parcelable$Creator *;
    |}
  """.stripMargin

答案 1 :(得分:0)

我在没有看到堆栈跟踪的情况下开火,但听起来你没有从Android项目中导出Akka项目。

  1. 在Eclipse中打开您的Android项目。
  2. 在Project Explorer中右键单击您的Android项目。
  3. 选择构建路径 - &gt;从菜单中配置构建路径。
  4. 出现对话框时,请转到“订购和导出”选项卡,然后确保选中“Akka”项目。