2016-08-12 29 views
20

Tôi đang sử dụng Android Studio 2.2 Preview 7 và plugin Lombok đột nhiên bắt đầu nói: Annotation processing seems to be disabled for the project X và cung cấp liên kết đến cài đặt.Lombok Yêu cầu xử lý chú thích

enter image description here

Nhấp vào thông báo không đưa tôi đến đúng nơi.

Khắc phục sự cố này là gì?

Trả lời

52

Cài đặt được mở bằng cách nhấp vào thông báo là cài đặt Per Project và những cài đặt đó không phải là những gì bạn cần trong trường hợp này.

Để khắc phục điều này, hãy để

  • File->Other Settings->Default Settings
  • Mở rộng Build, Execution, Deployment
  • Mở rộng Compiler
  • Trong Annotation Processors séc Enable annotation processing
  • Bạn có thể cần phải mở lại các dự án để có được các thiết lập có hiệu lực.
  • Thưởng thức

Để tham khảo hoàn chỉnh - ảnh chụp màn hình với màn hình cài đặt thích hợp: enter image description here

+14

này chỉ làm việc SAU tôi loại bỏ các dự án khỏi danh sách gần đây (những gì hiển thị thời điểm bạn bắt đầu AS) và sau đó lại thêm nó. – AndroidDev

+10

Để hoàn toàn chắc chắn: Đóng dự án. Xóa dự án khỏi hộp thoại "Chào mừng bạn đến với Android Studio" (nhấp vào X). Nhấp vào "Định cấu hình" ở dưới cùng bên phải và bật chế độ chú thích như được mô tả ở trên. Mở lại dự án Android hiện tại của bạn. Được mô tả trong câu trả lời này http://stackoverflow.com/a/38698186/1666063 –

+0

Thay đổi Thiết lập Mặc định không có hiệu lực trừ khi bạn đang tạo một dự án mới. Các cài đặt đã được viết bằng .idea/Và việc xóa dự án của bạn khỏi màn hình chào mừng sẽ không làm gì với nó. (Vâng, tôi đã thử. Nó không có hiệu lực. Sau đó, tôi nhận ra nó thậm chí không có ý nghĩa. :) /peace –

11

Trước tiên, tôi không nghĩ rằng loại bỏ dự án của bạn từ màn hình chào mừng có thể có hiệu lực. Chỉ cần suy nghĩ về nó, loại bỏ dự án của bạn từ "dự án gần đây" trên màn hình đó không tái tạo nó, làm thế nào có thể thay đổi thiết lập mặc định có bất kỳ tác dụng trên một dự án hiện có?

Để bật xử lý chú thích trong dự án hiện tại, bạn không cần xóa bất kỳ thứ gì. Chuyển đến YourAwesomeProject/.idea/compiler.xml và đảm bảo bạn có giá trị "đúng" trong thuộc tính sau: /project/annotationProcessing/[email protected].

Như thế này:

<?xml version="1.0" encoding="UTF-8"?> 
<project version="4"> 
    <component name="CompilerConfiguration"> 
    ... 
    <annotationProcessing> 
     <profile default="true" name="Default" enabled="true"><!-- here --> 
     <processorPath useClasspath="true" /> 
     </profile> 
    </annotationProcessing> 
    </component> 
</project> 

Bạn có thể cần phải File -> làm mất hiệu lực Caches/Restart

+1

Cố gắng này và nghĩ rằng nó hoạt động nhưng nó không. Upvoted nó là tốt cho ý tưởng thiết lập các tùy chọn trình biên dịch, nhưng có vẻ như để lưu trữ dữ liệu trong bộ nhớ cache. –

+0

@EmanuelSeibold điểm về bộ nhớ cache là một điểm tốt, cập nhật câu trả lời –

+0

Sử dụng cả @EmanuelSeibold và câu trả lời này đã khắc phục được sự cố của tôi –

6

Đối với những người có cùng một vấn đề sử dụng Android Studio 2.4+ của nó không được giải quyết bằng cách làm bất kỳ gợi ý trên trừ Janis Peisenieks trả lời.

Mở Intellij IDEA 2017/Android Studio 2 của bạn.4+ và đi đến (Windows)

  1. File-> Settings- Khác> Cài đặt Mặc định
  2. Mở rộng xây dựng, thi công, triển khai
  3. Mở rộng Compiler và chọn Chú xử lý
  4. Đảm bảo bạn có Bật xử lý chú thích và "Lấy bộ xử lý từ đường dẫn lớp dự án" đã bật
  5. Cuối cùng nhưng không kém phần cập nhật tệp build.gradle của dự án với đoạn mã bên dưới. Bỏ qua gợi ý rằng nó không được chấp nhận, vì nó không sử dụng (cho đến bây giờ. Xem issue).

    defaultConfig { 
        javaCompileOptions { 
         annotationProcessorOptions { 
          includeCompileClasspath = true 
         } 
        } 
    } 
    

phát hiện ra rằng có một cách rất đơn giản làm điều này mà không cần tất cả những thay đổi ở trên!

Nếu bạn đặt bộ xử lý của bạn trong gradle như Lombok bạn sẽ không sử dụng chỉ cung cấp hoặc testCompile. Bạn cần phải thêm điều này bằng cách sử dụng chú thíchProcessor cũng như phụ thuộc của bạn. Ví dụ:

dependencies { 
    provided "org.projectlombok:lombok:1.16.16" 
    annotationProcessor "org.projectlombok:lombok:1.16.16" 
} 

Cảm ơn Jack Wharton đã tìm ra cách anh ta giải quyết nó.

Gợi ý: Bạn có thể cần phải làm mất hiệu lực bộ nhớ cache và khởi động lại để làm việc cho một số bộ xử lý chú thích như lombok.

+0

Được bình chọn cho phần thứ hai của câu trả lời của bạn, không quan trọng với các thiết lập được sử dụng cho các dự án mới được tạo ra không có ý nghĩa IMO :)/hòa bình & cảm ơn cho điểm về lưu trữ một lần nữa –

+0

chào mừng bạn ;-) –

9

Với các phiên bản mới hơn gradle, nó là đủ để gõ những dòng này vào phụ thuộc build.gradle của của ứng dụng chặn: `

compile "org.projectlombok:lombok:1.16.16" 
annotationProcessor "org.projectlombok:lombok:1.16.16" 

Sync dự án với các gradle và nó sẽ làm việc.

+1

THIS làm việc hoàn hảo cho tôi trên Android STudio 3.0 Canary 4, gradle-4.0-rc-1 –

0

Thực hiện theo những gì tay thiết lập nói:

Gradle Hãy chắc chắn rằng phiên bản của plugin Android của bạn là> = 0.4.3 Sử dụng các plugin gradle-Lombok. Nếu bạn không muốn sử dụng plugin, thêm Lombok để ứng dụng của bạn phụ thuộc khối (yêu cầu Gradle v2.12 hoặc mới hơn):

dependencies {  
compileOnly "org.projectlombok:lombok:1.16.18" 
} 

Android Studio Thực hiện theo các hướng dẫn trước đây (Gradle). Ngoài để lập dự án gradle của bạn một cách chính xác, bạn cần phải thêm Lombok IntelliJ plugin để hỗ trợ thêm Lombok Android Studio:

  1. Tới File> Cài đặt> Plugins
  2. Bấm vào Browse kho .. .
  3. Tìm kiếm Lombok Plugin
  4. Bấm vào Cài đặt Plugin Restart Android Studio

https://projectlombok.org/setup/android

0

câu trả lời Có lẽ đánh dấu là đủ vào thời điểm đó nhưng tôi gặp khó khăn một chút với android xưởng 3 và lombot 1.16 .18. Dù sao sau đây làm việc cho tôi

trong app>build.gradle add sau

compileOnly 'org.projectlombok:lombok:1.16.18' 
annotationProcessor 'org.projectlombok:lombok:1.16.18' 

bạn có thể bắt đầu nhận được các lỗi khác vì thế nếu bạn ở bạn MyApplication>lombok.config add sau dòng

lombok.addGeneratedAnnotation = false 
lombok.anyConstructor.suppressConstructorProperties = true 

nếu bạn don' t có lombok.config vừa thêm vào nó

Ở trên được đề xuất theo th phát triển điện tử của Lombok trong bài viết sau đây
addGeneratedAnnotation
suppressConstructorProperties

Các vấn đề liên quan