Kotlinで「代わりに、そのクラスでダガープロセッサを実行することをお勧めします」


124

Kotlinクラスにインジェクトするたびに、ビルドでこのメモが表示されます(ところで、kotlinとjavaの両方が混在するAndroidプロジェクトがあります)。

たとえば、このGradleタスクの後compileStagingDebugJavaWithJavac(StagingDebugは私のビルドバリアントです)、次のメッセージが表示されます。

「注:com.packageNameXXX.CourseDiscoveryMapFragmentのMembersInjectorまたはFactoryを生成しています。代わりに、そのクラスに対して短剣プロセッサを実行することをお勧めします。」

私のCourseDiscoveryMapFragmentコードはここにあります:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}

そして私のActivityComponentは:

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

したがって、私はJavaで記述された短剣コンポーネントとモジュールを使用していますが、Kotlinでは短剣インジェクションを使用しています。

気になることはありますか?

ありがとうございました。


エラー/警告全体とそれに関連するコードを投稿できますか?
marcospereira 2016年

4
質問にはさらに詳細が必要です。あなたは基本的にグーグルクエリを質問として書きました。
Jayson Minard、2016年

@marcospereira再編集!ありがとう!
ファビオ・カルバリョ

4
ねえ、あなたは解決策を見つけましたか、多分その警告の理由はありましたか?
wojciech_maciejewski

回答:


5

できません。Kotlinで依存関係モジュールを作成しないのはなぜですか?

Javaで依存関係モジュールを作成するには、次のようにGradleスクリプトを構成する必要があります。

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

ただし、Kotlinで依存関係モジュールを作成するには、次のようにGradleスクリプトを構成する必要があります。

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

daggerには、コンパイルプロセス中に依存関係コードを生成するための注釈処理ツールが必要です。したがって、適切な言語に応じた適切なAPT(注釈処理ツール)を使用する必要があるだけだと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.