2016-11-30 5 views
6

Jack compilerをAndroidスタジオ2.2で有効にすると、Dagger 2コンポーネントは生成されません。ダガー2をジャックと一緒に使うことはできますか?もしそうなら、私はどのように私のアプリケーションを設定するつもりですか?自分のアプリケーションのbuild.gradleからジャガーを使用するとダガー2コンポーネントが生成されない

jackOptions { 
    enabled true 
    } 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 

答えて

8

2日間と考えています。だから私はここに結果を投稿して誰かの時間を節約するために回しています。

これはbug in Jack that prevents classpaths from working properlyによって引き起こされます。これは、 "in-process"(gradleデーモンと同じJVM内)を実行しているJackと関係があります。 android.defaultConfig.jackOptions.jackInProcessをfalseに設定すると、 "前提条件"のエラーを越えますが、その他の問題(システムリソースを抱える2つのJVM)& bugsが発生し、他の(worse)方法でビルドが中断されます。すでにこのための修正プログラムがありアンドロイドのGradleプラグインの2.3リリースの

  • 待ち:

    は今のところ、最良の解決策はあると思われます。

  • その間にダガーをv2.2にダウングレードします。
    ジャワとグアバの競合を避けるように見える最高のバージョンです。

EDIT:アップデート2017年1月14日:
は、私はこれ以前にやっていないために自分をジャックと他のいくつかの問題に走ったと私はretrolambdaに切り替えていること、それのように疲れたと蹴ら!今のところ、ジャックは単にそれが解決するよりも多くの問題を引き起こすようです。プラスのラインを追加し、マイナスのラインを削除すれば、ジャガーが一緒に行動するのを待つ間にダガー2.8に戻ることができます!さらに速くretrolambdaについては

+plugins { 
+ id "me.tatarka.retrolambda" version "3.4.0" 
+} 

apply plugin: 'com.android.application' 
+apply plugin: 'me.tatarka.retrolambda' 

-  jackOptions { 
-   enabled true 
-  } 

徳興市はインプロセスで起こることができるように、あなたのgradle.propertiesファイルにorg.gradle.jvmargs=-Xmx4608Mを追加し、構築します。今、私はダガー2.8と私のクリーンビルドは12秒、良いRIDDANCE、ジャックです!

+0

2.2から2.3への更新は、私のためのトリックでした。ありがとう – Gonzalo

3

documentation page on Jack and JillannotationProcessor依存スコープを使用することを専門家の意見、注釈プロセッサに固有の指示がある「コンパイル時に適用されるのが、あなたのAPKに含まれていません」。この例では、Dagger 2:

dependencies { 
    compile 'com.google.dagger:dagger:2.0' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.0' 
} 
+3

次のエラーが表示されます。エラー:タスク ':app:transformJackWithJackForDebug'の実行に失敗しました。 > com.android.jack.ir.JNodeInternalError:java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava/lang/String; Ljava/lang/Object; Ljava/lang/Object; Ljava/lang/Object;)V –

+0

@Marioこれは、クラスパス上のGuavaのコピーの不一致の問題です。私が調べていない可能性の1つは、Daggerが2.0をかなり上回って進んでいることです。したがって、2.8または2.xがもっとうまくいくかもしれません。 –

+0

私はバージョン2.8を使用しています –

0

ジャックは廃止されました。this postを参照してください。

は、あなたが、(他のLIBとの競合)、それをアップグレードできない場合のJava 8

を使用できるようにするために、3.0プレビュー1にAndroidのメーカーをアップグレードする必要があります。または、リリースを待つしたいですこの回避策を試すことができます:

関連する問題