- 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/
BufferedImage image = ImageIO.read(SpriteSheet.class.getResource(path)); BufferedImage image = Image
希望有人能够帮助我解决将我的 React 应用程序推送到 Heroku 时遇到的问题。 heroku 日志反复显示以下错误。 at=error code=H10 desc="App crashed"
我是 Kotlin 的新手,我正在经历这样的例子。 . . package com.example.lambda1 import spark.Spark.get fun main(args: Arra
如果您已经安装了 32 位 JDK,请在中定义一个 JAVA_HOME 变量 Computer>System Properties>System Setting>Enviorment VAriable
我正在开发一个独立于平台的应用程序。我收到一个文件 URL*。在 Windows 上,这些是: file:///Z:/folder%20to%20file/file.txt file://host/f
我在 OSX、Objective-C 上。 我有一个像 这样的路径/NSURL /Users/xxx/Desktop/image2.png 但我将它传递给第三方应用程序,该应用程序会像 excpect
我已经安装了 Android studio 和插件的 DART,FLUTTER 来启动 flutter,但是因为我在创建我的第一个 flutter 项目时无法提供 sdk 路径。 最佳答案 我试图找出
127.0.0.1:8000/api/仅包含来自第二个应用程序的 url,但我将两个 url 模块链接到相同的模式。甚至有可能做到这一点吗? 第一个应用程序: from django.urls imp
对于大量图像(大约 1k,加上相同数量的拇指,在大约 500 个文件夹中),我们要求网站上使用的所有图像 URI 都必须具有 SEO 优化路径。它们已经准备好并提供完整的路径结构(每个文件夹包含一个具
为什么 f 不是一个文件?什么可能导致这种情况? String currentPhotoPath = "file:/storage/sdcard0/Pictures/someFileName.
Gradle 中的项目名称或路径中允许使用哪些字符? 它是否与特定操作系统的目录名称中允许的字符相同(例如: http://en.wikipedia.org/wiki/Filename#Reserve
我有一个包含文件夹路径的表格。我需要找到层次结构中这些文件夹之间的所有“差距”。我的意思是,如果表格包含这 3 个文件夹: 'A' 'A\B\C' 'A\B\C\D\E\F\G' 我需要在层次结构中找
我在 Linux 服务器上的/home/subversion 中安装了 svn - 那里有一个 ROOT 文件夹,其中包含 db 和 conf 等文件夹。没有映射到项目名称的文件夹,请有人告诉我如何列
对于我的图像位置:/src/assets/bitmap/sample.jpg 给出了关键配置: context: resolve('src') output: { path: resolve('b
我需要创建带有圆角的 SVG 路径,以将它们导出到 DXF 进行切割。我的问题是角应该是圆弧,而不是贝塞尔曲线。 使用 arc 命令相对容易处理直角,因为半径也是从拐角到圆弧起点的距离。对于其他角度,
大家好,我正在玩 Airflow,我正在阅读这篇很有帮助的 tutorial .我正在寻求帮助以更好地了解 Admin->Connection 如何在 Conn Type: File (path) 方
我的目标是定义R将用于安装和搜索库的单个路径。我read可以通过更改Rprofile.site安装路径中的R文件来完成。我在那里尝试了两个命令: .libPaths("D:/RLibrary") .L
我有一个问题:当我在一个页面中时,我想返回到上一页。我使用 $routeProvider。如何读取之前的 url? 我尝试在我的 Controller 中使用此代码但不起作用... angular.m
我正在尝试将一个文件从我的主干合并到一个分支(wc),并且对于看起来位于当前合并操作中不涉及的分支上的路径出现奇怪的未找到路径错误。 例如,在我们的 svn 项目中,我们有: 分行 分支 0 分支 1
我有一个树数据序列化如下: 关系:P到C是“一对多”,C到P是“一对一”。所以列 P 可能有重复的值,但列 C 有唯一的值。 P, C 1, 2 1, 3 3, 4 2, 5 4, 6 # in da
我是一名优秀的程序员,十分优秀!