1

Toothpick ライブラリをリフレクションなしでマルチ モジュール プロジェクトに統合しようとしています。すべてのモジュールを DI に接続するために、このガイドに従います。たとえば、次の 3 つのモジュールがあります:app, :feature1, :feature2:appモジュールは と の両方に依存し:feature1ます:feature2。両方の機能モジュールからクラスを注入する必要があります。したがって、:appbuild.gradleファイルでは、次のようなものを記述する必要があります(kaptではなくannotationProccessorを使用):

annotationProcessorOptions { arguments = [ 
    toothpick_registry_package_name : 'com.example.app',
    toothpick_registry_children_package_names : "com.example.feature1,com.example.feature2" 
    ]}

ご覧のとおり、toothpick_registry_children_package_names引数には 2 つの値があります (2 つの値のリスト)。しかし、kapt プラグインを使用して 1 つのキーに複数の値を設定するにはどうすればよいでしょうか? 私はそれを次のようにしようとしました:

kapt {
    arguments {
        arg("toothpick_registry_package_name", "com.example.app")
        arg("toothpick_registry_children_package_names", ['com.example.feature1','com.example.feature2'])
    }
}

しかし、生成されたコードは次のようになります。

public MemberInjectorRegistry() {
    addChildRegistry(new [com.example.feature1.MemberInjectorRegistry());
    addChildRegistry(new com.example.feature2].MemberInjectorRegistry());
    registerGroup0();
  }

ご覧のとおり、引数には角括弧が含まれています (最初の引数は "[" で始まり、2 番目の引数は "]" で終わります)。私は何を間違っていますか?角かっこを削除しようとしましたが、両方のモジュール名が次のように連結されています。

public MemberInjectorRegistry() {
    addChildRegistry(new com.example.feature1 com.example.feature2.MemberInjectorRegistry());
    registerGroup0();
  }

kapt プラグインのバグですか、それとも何か間違っていますか?

4

0 に答える 0