Phiên bản JDK (Cấp độ ngôn ngữ) nào là bắt buộc cho Android Studio?


76

Tôi là một người mới đến với thế giới Android và có nền tảng .NET. Tôi đang cố gắng cài đặt Android Studio nhưng tôi gặp sự cố không khớp trên Android.com về phiên bản JDK cần thiết để phát triển các ứng dụng Android.

Từ trang web SDK, nó nói rằng JDK 6 là bắt buộc (trong phần yêu cầu hệ thống). Jim Wilson cũng nhấn mạnh trong khóa học của mình về Pluralsight (còn khá mới, từ tháng 5 năm ngoái) rằng việc sử dụng phiên bản 7 với Android SDK sẽ gây ra rất nhiều vấn đề đau đầu và nói rõ là chỉ sử dụng JDK 6.

Mặc dù trong trang Android studio (Đang cài đặt bước 2), họ giải thích cách đặt biến môi trường chỉ ra vị trí JDK chính xác. Ở đây họ sử dụng một đường dẫn JDK 7

Chọn Start menu > Computer > System Properties > Advanced System Properties. Sau đó, mở Advanced tab > Environment Variablesvà thêm một biến hệ thống mới JAVA_HOMEtrỏ đến thư mục JDK của bạn chẳng hạn C:\Program Files\Java\jdk1.7.0_21.

Tôi khá chắc chắn rằng cả gói ADT & Eclipse và gói Android Studio đều đang sử dụng cùng một SDK nhưng bây giờ tôi bối rối không biết mình cần cài đặt phiên bản JDK nào. Mục đích duy nhất của tôi là tránh các vấn đề càng nhiều càng tốt trong khi bắt đầu những bước đầu tiên trong quá trình phát triển Android.

Tuyên bố từ chối trách nhiệm: Tôi không liên quan đến Pluralsight. Tôi chỉ là một người dùng bình thường theo các khóa học.

Câu trả lời:


76

Làm rõ câu trả lời - Android Studio hỗ trợ JDK8

Sau đây là câu trả lời cho câu hỏi "Android hỗ trợ phiên bản Java nào?" khác với "Tôi có thể sử dụng phiên bản Java nào để chạy Android Studio?" đó là tôi tin rằng những gì thực sự đã được hỏi. Đối với những người muốn trả lời câu hỏi thứ 2, bạn có thể thấy Sử dụng Android Studio với Java 1.7 rất hữu ích.

Ngoài ra: Xem http://developer.android.com/sdk/index.html#latest để biết các yêu cầu hệ thống của Android Studio. JDK8 thực sự là một yêu cầu cho PC và linux (kể từ ngày 14/5/16).


Bản cập nhật Java 8 (19/3/14)

Bởi vì tôi cho rằng câu hỏi này sẽ sớm xuất hiện với bản phát hành ngày hôm qua: Hiện tại, vẫn chưa có ngày xác định về thời điểm Android sẽ hỗ trợ Java 8.

Đây là một cuộc thảo luận tại / androiddev - http://www.reddit.com/r/androiddev/comments/22mh0r/does_android_have_any_plans_for_java_8/

Nếu bạn thực sự muốn hỗ trợ lambda, bạn có thể kiểm tra Retrolambda - https://github.com/evant/gradle-retrolambda . Tôi chưa bao giờ sử dụng nó, nhưng nó có vẻ khá hứa hẹn.

Cập nhật khác: Android đã thêm hỗ trợ Java 7

Android hiện hỗ trợ Java 7 (trừ tính năng thử với tài nguyên). Bạn có thể đọc thêm về các tính năng của Java 7 tại đây: https://stackoverflow.com/a/13550632/413254 . Nếu bạn đang sử dụng gradle, bạn có thể thêm phần sau vào build.gradle của mình:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Phản hồi cũ hơn

Tôi đang sử dụng Java 7 với Android Studio mà không gặp bất kỳ sự cố nào (OS X - 10.8.4). Tuy nhiên, bạn cần đảm bảo rằng bạn giảm cấp độ ngôn ngữ của dự án xuống 6.0. Xem ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây

Những gì tehawtness nói dưới đây cũng có lý. Nếu họ đề xuất JDK 6, bạn chỉ cần sử dụng JDK 6. Cách nào cũng được.

nhập mô tả hình ảnh ở đây


Cập nhật: Xem bài đăng SO này - https://stackoverflow.com/a/9567402/413254


2
Đây có còn là trường hợp của Java 8 không? Khi nào nó sẽ được hỗ trợ?
doplumi

1
@domenicop thực sự. Có lẽ không phải trong vài năm nữa: P.
loeschg

2
Android sử dụng môi trường thời gian chạy của riêng nó là lý do tại sao Android luôn bị tụt hậu vài năm so với các phiên bản Java.
tiktak

1
Tôi thấy đây là câu trả lời được chấp nhận (với 57 phiếu tán thành), nhưng IMO thì điều này không trả lời câu hỏi nào cả. Câu hỏi đặt ra là phiên bản Java nào được yêu cầu để chạy AS, phiên bản này khá độc lập với phiên bản java được hỗ trợ cho các ứng dụng Android.
Tom

@Tom, tôi đồng ý! Tôi đã cập nhật câu trả lời ở trên để phản ánh điều đó ít nhất ở một mức độ nào đó.
loeschg

3

Thông thường, tôi sẽ làm theo những gì tài liệu nói nhưng nếu người hướng dẫn nói rõ ràng là gắn bó với JDK 6, tôi sẽ sử dụng JDK 6 vì bạn muốn môi trường phát triển của mình càng gần với người hướng dẫn càng tốt. Sẽ thật tệ nếu bạn gặp phải vấn đề và có suy nghĩ trong đầu rằng có thể là do bạn đang sử dụng JDK 7 nên bạn đang gặp vấn đề. Btw, tôi chưa chạm vào Android gần đây nhưng cá nhân tôi chưa bao giờ gặp sự cố khi sử dụng JDK 7 nhưng phiền bạn, tôi chỉ viết mã các ứng dụng Android một cách tình cờ.


2

Cố gắng không sử dụng phiên bản JDK cao hơn phiên bản được hỗ trợ. Tôi đã thực sự gặp phải một vấn đề rất mơ hồ cách đây vài tháng.

Tôi đã có một thư viện jar của riêng mình mà tôi đã biên dịch bằng JDK 8 và tôi đang sử dụng nó trong bài tập của mình. Nó đã cho tôi một số loại preDexDebuglỗi mỗi khi tôi thử chạy nó. Cuối cùng, sau nhiều giờ cố gắng giải mã các nhật ký lỗi, cuối cùng tôi đã biết được điều gì đã xảy ra. Tôi đã kiểm tra các yêu cầu hệ thống, thay đổi trình biên dịch từ 8 thành 7 và nó hoạt động. Có vẻ như việc đặt cái lọ của tôi vào thư viện khiến tôi mất vài giờ hơn là lưu nó ...


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.