2011-10-09 36 views
6

Tôi đang theo dõi video trên trang này http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html sử dụng SBT để tạo một dự án Android. Tuy nhiên tôi nhận được đến điểm cố gắng để cài đặt trình giả lập dùngLỗi khi chạy sbt install-emulator

sbt install-emulator 

Và tôi nhận được lỗi sau:

[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 [[email protected]] (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) 
+0

Bạn có quản lý để giải quyết vấn đề? Tôi đang đối mặt với cùng một vấn đề và muốn biết bạn đã làm như thế nào. – Salil

Trả lời

4

Tôi gặp vấn đề tương tự. Tôi nhận ra đó là vì tôi đã sử dụng JDK 1.7. Mặc dù lọ được tạo ra với 1,6 làm việc trên 1,7, proguard cho 1,6 lọ không hoạt động với 1,7 lọ. Hiện tại, chỉ có phiên bản beta Proguard mới có sẵn cho 1,7. Vì vậy, các công cụ Android và kho lưu trữ maven có proguard cho 1,6 lọ. Khi nó cố gắng cắt 1,7 lọ, nó ném lỗi đó.

Để giải quyết vấn đề này, tôi hạ cấp xuống JDK 1.6, gỡ cài đặt 1.7 và đảm bảo rằng các bình của tôi được tạo bởi 1,6 công cụ JDK.

Để xóa 1,7 lọ khỏi kho lưu trữ cục bộ, tôi vừa xóa các thư mục trong ~/.ivy2 và tạo lại dự án android bằng plugin. Và tôi chỉ theo README cho plugin android cho tee.

+0

hỗ trợ ở trên: https: //github.com/jberkel/android-plugin/issues/102 – RAbraham

+0

bất kỳ tin tức nào về việc hỗ trợ java 1.7? –

2

Như trang mà bạn liên kết đến nói: "Lưu ý: Bài viết này hasn' t được cập nhật trong một thời gian và đã lỗi thời. Nghi ngờ đề cập đến README của sbt-android-plugin. " Readme đó (README.md) chứa tập hợp chỉ dẫn duy nhất mà tôi có thể tìm thấy thực sự hoạt động với các phiên bản hiện tại của scala, sbt và Android SDK.

tôi bị buộc phải chỉ vài tinh chỉnh nhỏ để làm cho nó làm việc:

  1. Sửa đổi kịch bản SBT của bạn (có thể là ~/bin/SBT) và thêm một "-XX: MaxPermSize = 512M" tham số, nếu không bạn chạy ra khỏi không gian PermGen
  2. Đảm bảo sử dụng mẫu 0,10 (mặc định) thay cho mẫu 0,11 mà bạn có thể chỉ định tùy chọn.
  3. Đảm bảo rằng bạn bỏ qua phần "Hacking on the plugin" khi nó cho bạn biết.

Hy vọng điều này sẽ hữu ích.

0

Đối với tôi, mô tả trên trang web plugin đủ: link.

Bạn đã cố gắng thực hiện theo cách đó chưa?

0

Bởi vì dường như jdk1.7 không tương thích, tôi có cùng một vấn đề. Trong file build.scala của tôi, tôi đã thêm dòng sau:

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

và sau đó nó làm việc.

0

Tôi đã gặp lỗi "(số phiên bản không được hỗ trợ [51.0] cho định dạng lớp)" với phiên bản java "1.7.0_51".

Vấn đề này cố định bằng cách thêm dòng tương thích javac để Build.scala:

val settings = Defaults.defaultSettings ++ Seq (
    ... 
    javacOptions ++= Seq("-encoding", "UTF-8", "-source", "1.6", "-target", "1.6") 
) 
Các vấn đề liên quan