安卓上的阿卡

Posted

技术标签:

【中文标题】安卓上的阿卡【英文标题】:Akka on Android 【发布时间】:2014-11-15 11:19:06 【问题描述】:

我在 android 上运行 akka 时遇到问题。一旦我启动它,我的应用程序就会崩溃。我使用 Akka 2.3.5,Scoid 3.5-10。

我的 SignInActivity

开始
private implicit val system = ActorSystem("signin")  // this throws the error above
override def onCreate(savedState: Bundle): Unit = 
    super.onCreate(savedState)
    setContentView(R.layout.signin)
    val etMail = find[EditText](R.id.etMail)
    val etPass = find[EditText](R.id.etPass)
    find[Button](R.id.signInBtn).setOnClickListener(new OnClickListener 
      override def onClick(v: View): Unit = 
        signIn(etMail.text.toString, etPass.text.toString)
      
    )

09-21 11:35:34.601  10789-10789/at.itn.android E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: at.itn.android, PID: 10789
    java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$.empty
            at akka.actor.ActorCell$.<init>(ActorCell.scala:336)
            at akka.actor.ActorCell$.<clinit>(ActorCell.scala)
            at akka.actor.RootActorPath.$div(ActorPath.scala:159)
            at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:464)
            at akka.actor.LocalActorRefProvider.<init>(ActorRefProvider.scala:452)
            at java.lang.reflect.Constructor.constructNative(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(DynamicAccess.scala:78)
            at scala.util.Try$.apply(Try.scala:191)
            at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:73)
            at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
            at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
            at scala.util.Success.flatMap(Try.scala:230)
            at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:84)
            at akka.actor.ActorSystemImpl.liftedTree1$1(ActorSystem.scala:584)
            at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:577)
            at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
            at akka.actor.ActorSystem$.apply(ActorSystem.scala:108)
            at at.itn.android.gui.activities.SignInActivity.<init>(SignInActivity.scala:20)

我真的不明白这个定义会有什么麻烦。也许这是一个 proguard.cfg 问题?

java.lang.NoSuchMethodError: scala.collection.immutable.StringLike.toString

有人遇到了类似的问题,并用一些正确的 proguard 选项修复了它。我的 proguard 中确实有 SeqLike 部分,但可能还缺少其他东西。

有人知道我做错了什么吗?

PS:我之前确实发过一个类似的帖子(Akka on Android multiple reference.conf - 虽然是不同的 akka 问题),但是由于我直到现在才开始工作,所以我发布了另一个 akka 问题。

【问题讨论】:

【参考方案1】:

可以通过查看 Maven 存储库中的项目 pom 文件来检查库依赖关系:

Akka 2.3.5, Scaloid 3.5-10

您可以看到 Akka 依赖于 scala-library 2.10.4,而 Scalaid 依赖于 2.11.2。 如果您想在同一个项目/类路径中使用它们,它们需要具有相同版本的依赖库(理想情况)或具有向后兼容的版本,以避免类路径冲突。

【讨论】:

以上是关于安卓上的阿卡的主要内容,如果未能解决你的问题,请参考以下文章

安卓手机上的时间怎么调啊?

苹果手机上的联系人怎么可以传到安卓手机上

安卓手机上的音乐转换软件

安卓手机上的固件版本号怎么查

安卓上的OProfile

安卓模拟器上的 Instagram