2016-11-08 10 views
4

주석 처리기를 사용하기 위해 kapt를 사용하려고합니다. 하지만 몇 가지 문제가 발생했습니다.kapt Android Studio로 주석 처리

kapt files('libs/processor.jar') 
    provided files('libs/processor.jar') 

1) 나는 코드 생성을위한 JavaPoet을 사용하고 있습니다 :

주석 프로세서 항아리는 이런 식으로 연결되어 있습니다. 그리고이 방법

JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build(); 
    javaFile.writeTo(processingEnv.getFiler()); 

내 수업을 저장하지만 항상 \ 생성 \ 소스 \의 kapt의 \ 자료를 구축하고, 결코 상관없이 빌드 변형의 debug 폴더에에 저장합니다.

enter image description here

2) 두 번째 문제 생성 된 파일은 가끔으로 Build-를 누를 때까지>, 새로 재 구축하지 않는다는 것입니다

+0

이 해결책이 있습니까? 같은 문제가 발생했습니다. –

+0

@ david.schreiber 폴더의 문제는 응용 프로그램 모듈에서만 프로세서를 사용하여 "해결"되었습니다. 파일 업데이트 문제가 남아 있습니다. kotlin 1.0.6을 사용하고 있습니까? 아마도 kapt에서 이러한 문제를 해결했을 것입니까? – Ufkoku

+0

라이브러리 모듈에도 문제가 있지만, gradle 출력을 분석 한 후에 릴리스 소스 만 작성된 것으로 나타났습니다.그 이유는 기본적으로 라이브러리 모듈은 릴리스 아티팩트 만 게시하기 때문입니다. http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication 이 질문에 답하십시오. –

답변

2

자동으로 내장 된 라이브러리를 기반으로 올바른 출력 디렉토리를 선택 것이다 kotlin-kapt 플러그인/응용 프로그램 변형. 하나의 com.android.application 모듈이있는 프로젝트를 빌드 할 때 Android Studio는 '변형 생성'메뉴에서 선택한 애플리케이션 변형을 사용합니다.

Build variants window

이 다르게 구성되지 않은 경우 release 빌드 변형을 게시됩니다, 라이브러리 모듈에 대한 사실이 아니다 - 당신이 "변형 빌드"메뉴 안에 그 모듈에 대해 "디버그"를 선택하는 경우에도. 은 "변형 빌드"창에서

  1. , 주석이 달린 코드가 포함 된 라이브러리 모듈의 "릴리스"를 선택 :

    kapt 위 라이브러리 모듈의 실행을 얻으려면, 당신은 세 가지 옵션이 있습니다. 이렇게하면의 출력이 kapt 인 Android Studio에 전달됩니다.

  2. 라이브러리 모듈 build.gradledefaultPublishConfigdebug으로 설정하고 디버그시 선택된 변형도 유지하십시오. 그러면 Android Gradle 플러그인에 기본 release 대신 debug 라이브러리 변형을 컴파일하도록 지시합니다.

    android { 
        defaultPublishConfig "debug" 
    } 
    
  3. 또한 truepublishNonDefaults을 설정하여 모두 debugrelease 빌드 변종이 동시에 개미 게시 할 수 있습니다. 기본 응용 프로그램 모듈에서 debugCompilereleaseCompile 구성에 대해 라이브러리 모듈을 두 번 참조 할 수 있습니다. 그러나 빌드 시간에 디버그 소스 만 필요로 할지라도 컴파일 시간이 실질적으로 두 배가 되더라도 은 항상입니다.