2016-11-08 21 views
4

注釈プロセッサを使用するためにkaptを使用しようとしています。しかし、私はいくつかの問題に遭遇しました。 Iはコード生成用JavaPoetを使用していkapt Android Studioでの注釈処理

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

1):

注釈プロセッサジャーをこのように接続されています。そして、このよう

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

しかし、それは関係なく、常にビルドバリアントのデバッグフォルダに決して\生成された\ソース\ kaptの\リリースを構築するためにそれを保存していない、と私のクラスを保存します。

enter image description here

2)私はビルド - >

+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プラグインを再構築押すまで第二の問題は、生成されたファイルは時々更新されないということです自動的に構築されたライブラリーに基づいて正しい出力ディレクトリを選択します/アプリケーションの変形。 1つのcom.android.applicationモジュールを含むプロジェクトをビルドする場合、Android Studioは「バリアントの作成」メニューで選択したアプリケーションバリエーションを使用します。

Build variants window

これは、ライブラリモジュールには当てはまりません、これは、そうでない場合は設定していない場合は、releaseビルドバリアントを公開します - あなたは、「バリアントの構築」メニュー内のこれらのモジュールは、「デバッグ」を選択した場合でも。 「バリアントの構築」ウィンドウで

  1. 、あなたの注釈付きコードを含むライブラリモジュールの「解放」を選択します。

    kaptアップし、ライブラリモジュールのためのランニングを取得するには、次の3つのオプションがあります。これは、generated/sources/kapt/release/の中でkaptの出力を受け取るようにAndroid Studioに指示します。

  2. ライブラリモジュールbuild.gradleには、defaultPublishConfigdebugに設定します(選択したバリアントもデバッグするようにしてください)。これにより、デフォルトのreleaseの代わりにdebugライブラリの亜種をコンパイルするようAndroid Gradleプラグインに指示します。

    android { 
        defaultPublishConfig "debug" 
    } 
    
  3. またtruepublishNonDefaultsを設定することにより、双方のdebugreleaseビルド変異体は、同じ時間をアリ公開することを選択できます。あなたのメインのアプリケーションモジュールでは、debugCompilereleaseCompile構成のライブラリモジュールを2回参照することができます。ただし、ビルド時にデバッグソースのみが必要な場合でも、実際にコンパイル時間が倍増する場合でも、は常にになります。

関連する問題