2

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

4

2 回答 2

1

我感觉到你的痛苦。我花了几个小时试图让 sbt、proguard、scala、akka 工作,并建议你从这里查看 project/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

)

于 2013-04-09T00:46:03.887 回答
0

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

  1. 在 Eclipse 中打开您的 Android 项目。
  2. 在 Project Explorer 中右键单击您的 Android 项目。
  3. 从菜单中选择构建路径 --> 配置构建路径。
  4. 当对话框出现时,转到 Order and Export 选项卡,然后确保选中您的 Akka 项目。
于 2013-04-05T07:31:24.890 回答