6

我正在关注此页面上的视频http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html它使用 SBT 创建 Android 项目。但是我到了尝试使用安装模拟器的地步

sbt install-emulator

我收到以下错误:

    [info] Nothing to compile.
    [info]   Post-analysis: 1 classes.
    [info] == tests / compile ==
    [info]
    [info] == awesomepad / proguard ==
    ProGuard, version 4.4
    ProGuard is released under the GNU General Public License. The authors of all
    programs or plugins that link to it (sbt, ...) therefore
    must ensure that these programs carry the GNU General Public License as well.
    Reading program directory [C:\Projects\Scala\sbt2test\awesomepad\target\scala_2.
    9.1\classes]
    java.io.IOException: Can't read [proguard.ClassPathEntry@550a17fb] (Can't proces
    s class [com/kickass/awesomepad/R$attr.class] (Unsupported version number [51.0]
     for class format))
            at proguard.InputReader.readInput(InputReader.java:230)
            at proguard.InputReader.readInput(InputReader.java:200)
            at proguard.InputReader.readInput(InputReader.java:178)
            at proguard.InputReader.execute(InputReader.java:78)
            at proguard.ProGuard.readInput(ProGuard.java:195)
4

5 回答 5

4

我遇到过同样的问题。我意识到这是因为我使用的是 JDK 1.7。尽管使用 1.6 创建的 jars 可以在 1.7 上运行,但 1.6 jars 的 proguard 不适用于 1.7 jars。目前,只有 Proguard 的 beta 版本可用于 1.7。因此,android 工具和 maven 存储库具有适用于 1.6 jar 的 proguard。当它尝试修剪 1.7 jar 时,它会抛出该错误。

为了解决这个问题,我降级到 JDK 1.6,卸载 1.7 并确保我的 jar 是由 1.6 JDK 工具创建的。

要从本地存储库中删除 1.7 jar,我只是删除了 ~/.ivy2 下的目录并使用插件重新创建了 android 项目。我只是按照 android 插件的 README 进行操作。

于 2011-11-12T07:52:05.040 回答
2

正如您链接到的页面所说,“注意:这篇文章已经有一段时间没有更新并且已经过时了。如有疑问,请参阅 sbt-android-plugin 的 README。” 那里的自述文件 ( README.md ) 包含我能够找到的唯一一组指令,这些指令实际上适用于当前版本的 scala、sbt 和 Android SDK。

我只需要做一些小的调整就可以让它工作:

  1. 修改你的 sbt 脚本(可能是 ~/bin/sbt)并添加一个“-XX:MaxPermSize=512m”参数,否则你会用完 PermGen 空间
  2. 确保使用 0.10 模板(默认)而不是您可以选择指定的 0.11 模板。
  3. 当它告诉你时,请确保你跳到“黑客插件”部分。

希望这可以帮助。

于 2011-10-09T23:44:10.553 回答
0

对我来说,插件网站上的描述就足够了:链接

你试过那样做吗?

于 2011-10-10T08:41:34.643 回答
0

因为显然 jdk1.7 不兼容,所以我遇到了同样的问题。在我的build.scala文件中,我添加了以下行:

javaHome := Some(file("c:\\Program Files\\Java\\jdk1.6.0_35"))

然后它起作用了。

于 2013-04-23T10:51:38.680 回答
0

java 版本为“1.7.0_51”时,我收到错误“(类格式不支持的版本号 [51.0])”。

通过向 Build.scala 添加 javac 兼容性行来解决此问题:

val settings = Defaults.defaultSettings ++ Seq (
  ...
  javacOptions ++= Seq("-encoding", "UTF-8", "-source", "1.6", "-target", "1.6")
)
于 2014-03-09T09:52:29.310 回答