- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 sbt 和 jberkel/android-plugin 在 Scala 和 Akka 中设置简单的 Android 项目.我成功地基于 getting started tutorial of android-plugin 创建了简单的应用程序.我还设法组装了 ProGuard 配置,这使我能够将 Akka 混合到项目中。
现在我想添加Akka配置文件,但我做不到。我在 src/main/resources
文件夹中创建了它,并希望它能正常工作。不幸的是,在 APK 组装过程中,sbt 失败并出现以下错误:
[trace] Stack trace suppressed: run last Akkdroid/android:package-debug for the full output.
[error] (Akkdroid/android:package-debug)
[error] Using keystore: /home/ghik/.android/debug.keystore
[error] Packaging akkdroid-0.1.apk
[error] /data/Studia/S10/Mobilne/akkdroid/target/resources.apk:
[error] => res/layout/main.xml
[error] => AndroidManifest.xml
[error] => resources.arsc
[error] /data/Studia/S10/Mobilne/akkdroid/target/classes.dex => classes.dex
[error] /data/Studia/S10/Mobilne/akkdroid/target/classes.min.jar:
[error] => akkdroid.conf
[error] => library.properties
[error] => reference.conf
[error] => org/jboss/netty/container/spring/beans.xml
[error] /data/Studia/S10/Mobilne/akkdroid/src/main/resources/akkdroid.conf => akkdroid.conf
[error]
[error] Error packaging /data/Studia/S10/Mobilne/akkdroid/target/akkdroid-0.1.apk: Duplicate files at the same path inside the APK
[error] Total time: 20 s, completed 2013-04-24 20:32:47
从这些消息中,我推断我的 akkdroid.conf
文件首先被复制(通过 ProGuard?)到 classes.min.jar
中,然后是 sbt
尝试构建包,包括来自 classes.min.jar
和 src/main/resources
的资源,它最终看到我的文件两次。
不幸的是,我不知道为什么会发生这种情况以及如何解决它。
如果有帮助,这是我的 sbt
构建文件(主要由 jberkel's template 生成):
import sbt._
import Keys._
import AndroidKeys._
object General {
val settings = Defaults.defaultSettings ++ Seq(
name := "Akkdroid",
version := "0.1",
versionCode := 0,
scalaVersion := "2.10.1",
platformName in Android := "android-10",
javacOptions ++= Seq("-source", "1.6", "-target", "1.6")
)
val proguardSettings = Seq(
useProguard in Android := true,
proguardOption in Android :=
"""-keepclassmembers class * {
| ** MODULE$;
| }
|-keep public class akka.actor.LocalActorRefProvider {
|public <init>(...);
|}
|-keep public class akka.remote.RemoteActorRefProvider {
|public <init>(...);
|}
|-keep class akka.actor.SerializedActorRef {
|*;
|}
|-keep class akka.remote.netty.NettyRemoteTransport {
|*;
|}
|-keep class akka.serialization.JavaSerializer {
|*;
|}
|-keep class akka.serialization.ProtobufSerializer {
|*;
|}
|-keep class com.google.protobuf.GeneratedMessage {
|*;
|}
|-keep class akka.event.Logging*
|-keep class akka.event.Logging$LogExt{
|*;
|}
|-keep class scala.Option
|-keep class scala.Function1
|-keep class scala.PartialFunction
|-keep class scala.collection.SeqLike {
|public protected *;
|}
|-keep class akka.**
|-keepclassmembers class akka.**
|-keep class org.omg.**
|-keep class scala.Tuple2
|-dontskipnonpubliclibraryclassmembers
|-dontskipnonpubliclibraryclasses
""".stripMargin
)
lazy val fullAndroidSettings =
General.settings ++
AndroidProject.androidSettings ++
TypedResources.settings ++
proguardSettings ++
AndroidManifestGenerator.settings ++
AndroidMarketPublish.settings ++ Seq(
keyalias in Android := "change-me",
libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test"
)
}
object AndroidBuild extends Build {
javacOptions ++= Seq("-target", "1.6")
lazy val main = Project(
"Akkdroid",
file("."),
settings = General.fullAndroidSettings ++ Seq(
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.10" % "2.1.2",
libraryDependencies += "com.typesafe.akka" % "akka-remote_2.10" % "2.1.2"
)
)
lazy val tests = Project(
"tests",
file("tests"),
settings = General.settings ++
AndroidTest.androidSettings ++
General.proguardSettings ++ Seq(
name := "AkkdroidTests"
)
) dependsOn main
}
如果能提供一些帮助,我将不胜感激。我几乎没有 Android 或 SBT 方面的经验。
最佳答案
我遇到了同样的问题。我不知道这是否是最好的处理方式,但我把我的配置文件放在android项目的raw
目录下。然后我将其解析为 Config
对象并将其传递给 ActorSystem
构造函数。
object AkkaSystem {
private var systemOption: Option[ActorSystem] = None
def system(implicit context: Context): ActorSystem = synchronized {
systemOption match {
case None =>
val reader = new InputStreamReader(
context.getResources.openRawResource(R.raw.configuration)
)
systemOption = Option (
ActorSystem("MySystem", ConfigFactory.parseReader(reader))
)
reader.close()
systemOption.get
case Some(existingSystem) => existingSystem
}
}
}
然后在我的 Activity
类中,我可以使用那个 AkkaSystem
对象来获取配置的 ActorSystem
:
class MainActivity extends Activity {
implicit val context = this
private def mainActor = AkkaSystem.system.actorOf(Props[MainActor], "main")
}
我同意,如果我可以避免所有这些代码以及传递 Context
以获得 Android 资源的需要,那会更好。
关于android - 类路径资源被(可能)sbt 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200386/
这很可能是我的语法错误,因为我对在 C++ 中使用多个文件和结构(特别是将结构传递给函数)还很陌生。这是三个文件: 主要.cpp: #include #include #include #inc
我有 TypeScript NestJS 项目。 我需要验证传入的 DTO 到我的 API。它可以被描述为“创建项目”,其中我们有建筑类型(房屋、公寓、花园),并根据该类型我们需要定义: 房屋:楼层包
是否可以从可用于泛型参数的可能类型集中排除特定类型?如果是如何。 例如 Foo() : where T != bool 将意味着除了类型 bool 之外的任何类型。 编辑 为什么? 以下代码是我尝试强
我的 WebGL 体积光线转换应用程序即将完成。但是我发现了一个问题。我必须通过 2D 纹理模拟 3D 纹理。这不是问题。我正在用小切片创建一个巨大的纹理。巨大纹理的尺寸约为 4096x4096 像素
我正在处理的网页上显示了一个返回顶部按钮。当您向下滚动时,有时单击它时,它会跳到顶部,然后跳回您在页面上的位置,然后像预期的那样平滑滚动到顶部。请记住,它并不总是这样做。这只是一个滞后或故障问题还是我
我对此还很陌生,所以请耐心等待。 我有一个类,它具有三个属性:几个整数和一个用户定义对象的集合。 public class Response { public int num1 { get;
我正在制作一款平台游戏,让玩家每 30 毫秒跳跃一次,并向上添加少量的力。我想我应该使用多线程,因为我之前已经做过一些,而且看起来很简单。无论如何,我尝试了这个: public void jump()
是否可以从可能的类型集中排除特定类型,这些类型可以在泛型参数中使用?如果是这样的话。 例如 Foo() : where T != bool 表示除 bool 类型之外的任何类型。 编辑 为什么? 以下
我正在尝试在单个查询中实现内部和外部联接,我不确定我的做法是正确还是错误,因为我不太擅长查询。 就这样吧。 我有以下表格。 hrs_residentials hrs_residential_utili
关于 my website ,有一段代码可以向页面添加几个元素。这段代码不是我可以编辑的东西,而且我对它放置这些元素的位置不满意,因为它弄乱了我的一些布局。所以我想出了一个小的 jQuery 来将它们
一位客户希望我创建一个数据集,如下所示。我不知道这是否可能或合乎逻辑。 我有表parent: id name ------- ------- 1 parent1 2
这可能吗?google 好像没有这方面的资料.. 这样,如果用户在另一个网站上播放视频或歌曲,我的音量就会自动减小 最佳答案 不,这是不可能的。 如果可能的话,它必须是特定于浏览器的,但我不认为这种情
所以我正在尝试制作响应式页面。问题是为什么它归结为移动数据需要位于列表中。 我会用一些示例代码来解释 所以这可能是桌面上的输出 option1
当您将鼠标悬停在a 元素 上时,是否可以删除url? 这就是我的意思: 最佳答案 一种选择是使用一些 JavaScript。 删除 href=来自 的属性标签,取而代之的是 onclick=...
我已经考虑了几个小时,但我无法取得太大进展。它是这样的: You have an array of size n and q queries. Each query is of the form (l
我一直在尝试编写一个脚本来强化 android。我没有成功! 我正在通过模拟器运行一个 AVD,并且已经用我加载的 android shell 和 bash shell 试过了。正如您将在下面看到的那
Private Sub Workbook_Open() Dim WBname As String WBname = ThisWorkbook.name If Not InStr(WBname, "te
Spark 2.0.0-预览版 我们有一个应用程序使用了相当大的广播变量。我们在大型 EC2 实例上运行它,因此部署处于客户端模式。广播变量是一个巨大的 Map[String, Array[Strin
我正在尝试从此link中提取摘要。但是,我无法仅提取摘要的内容。到目前为止,这是我完成的工作: url <- "http://www.scielo.br/scielo.php?script=sci_a
我的主页中有一个iframe。 iframe页面中有一个modalpopup。因此,当显示modalpopup时,modalpopup的父级是iframe主体和主页父级主体。因此,覆盖层仅覆盖ifra
我是一名优秀的程序员,十分优秀!