2014-09-03 14 views
5

Tôi đã làm việc trên một bộ xử lý chú thích java đơn giản kéo dài AbstractProcessor.Tôi làm cách nào để sử dụng Bộ xử lý chú thích Java tùy chỉnh trong Gradle?

tôi đã có thể để thử nghiệm thành công này sử dụng javac -Processor MyProcessor mySource.java

Vấn đề là tích hợp này vào một ứng dụng android Hello World đơn giản sử dụng Android Studio.

Tôi bắt đầu bằng cách tạo một dự án Android mới và sau đó thêm một mô-đun riêng biệt, nơi tôi đặt tất cả mã bộ xử lý chú thích của mình (lớp MyProcessor cũng như chú thích tùy chỉnh mà nó sử dụng).

Sau đó tôi đã thêm mô-đun mới này làm phụ thuộc của dự án Android HelloWorld.

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':MyProcessorModule') 
} 

Làm cách nào để sử dụng bộ xử lý để tạo mã dựa trên tất cả các tệp nguồn trong ứng dụng HelloWorld?

+0

Tôi nhớ trình biên dịchArgs cho Gradle mà bạn đang sử dụng khi biên dịch thủ công. – Peter

+0

cuối cùng bạn đã tìm ra đúng cách để làm điều này? –

Trả lời

2

có một plugin để làm cho nó hoạt động. Nó hoạt động hoàn hảo với các module có trên Maven, không chắc chắn về file .jar địa phương, nhưng bạn chắc chắn cung cấp cho nó một thử:

đây trang plugin: https://bitbucket.org/hvisser/android-apt

và đây build.gradle của tôi với nó:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     ... add this classpath to your buildscript dependencies 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
    } 
} 

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' << apply the plugin after the android plugin 

dependencies { 
    // in dependencies you call it 
    apt 'com.company.myAnnotation:plugin:1.0-SNAPSHOT' 
    compile 'com.company.myAnnotation:api:1.0-SNAPSHOT' 

và nó sẽ hoạt động.

+4

Nó cũng hoạt động với các jars cục bộ: 'apt files ('libs/locallib.jar')' – WonderCsabo

0

những gì bạn đang làm là hoàn toàn đúng, đây là một ví dụ về một trong những dự án của tôi mà tôi sử dụng như một thư viện:

dependencies { 
    compile project(':boundservice') 
} 

dĩ nhiên bạn nên làm gì cũng là để xác định các mô-đun bạn thêm của bạn thư viện là

android-library không được đăng ký và không áp dụng.

Điều này sẽ xảy ra tự động nếu bạn sử dụng tùy chọn New Module ->Android Library, nhưng có thể là dự án này, như tôi hiểu ... không liên quan gì đến Android, bạn chỉ nên chọn tùy chọn Java Library.

Khi bạn thực hiện điều đó và đồng bộ hóa tệp build.gradle (có thể một chút công cụ gọn gàng sẽ giúp ích), bạn sẽ có thể sử dụng tệp lớp học của mình trong dự án Android.

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