我试图添加akka并喷涂到我的Android应用程序(使用Scaloid lib在Scala中编写)。一切都应该工作正常,我的想法不会丢失任何错误。我找到了一些解决同一问题的链接,但到目前为止没有任何帮助。当我使用:
构建项目时sbt ~android:install
当我在build.sbt中有以下行时
apkbuildExcludes in Android += "reference.conf"
我收到错误
08-31 08:02:45.598 7884-7884/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: at.itn.android, PID: 7884
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka'
没有它
[info] Generating dex, incremental=true
com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK reference.conf
File 1: /home/markus/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.3.5.jar
File 2: /home/markus/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.3.5.jar
我没有任何reference.conf(我也尝试了 reference.conf https://github.com/akka/akka/blob/master/akka-actor/src/main/resources/reference.conf)
这是 build.sbt
android.Plugin.androidBuild
name := "myApp"
scalaVersion := "2.11.0"
proguardCache in Android ++= Seq(
ProguardCache("org.scaloid") % "org.scaloid"
)
proguardOptions in Android ++= Seq(
"-dontobfuscate",
"-dontoptimize",
"-dontwarn scala.collection.mutable.**",
"-ignorewarnings",
"-keep class scala.Dynamic"
)
apkbuildExcludes in Android += "reference.conf"
libraryDependencies ++= {
Seq(
"org.scaloid" %% "scaloid" % scaloidV,
"com.typesafe.akka" % "akka-actor_2.11" % akkaV
// ....
)
}
有人可以告诉我如何在Android上运行akka吗?
答案 0 :(得分:3)
我有一个在android上使用akka和spray的工作示例。看看这个。 https://github.com/anjeikatkov/android-akka-spray-example
希望,这有帮助。
答案 1 :(得分:1)
我刚才在scala-on-android邮件列表上描述了一个解决方案。这是链接:https://groups.google.com/d/msg/scala-on-android/JwMQCtC2zCs/rHHg4BU55W0J。
TL; DR:主要问题似乎是错误的类加载器(你应该在logcat中看到一个警告)。我在应用程序中预装了配置:
class MyApplication extends Application {
...
val config = ConfigFactory.load()
...
}
并且还明确地将ActorSystem指向了正确的类加载器:
val app = getApplication.asInstanceOf[MyApplication]
val actorSystem = ActorSystem("MyActorSystem", app.config, app.getClassLoader)
希望有所帮助
答案 2 :(得分:0)
你应该放置" reference.conf"从akka repostiory文件到项目的 / src / main / resources 目录。
答案 3 :(得分:0)
只有完整的答案:
android-sdk-plugin似乎有三种目录布局:
我发现的所有答案都说我应该将我的reference.conf文件放在$ BASE / src / main / resources /上。但是看ProjectLayout.scala,我们可以看到这个建议只适用于Gradle布局。
在我的项目中,插件使用的是Ant布局,所以应该放在$ BASE / resources /
上