Toothpick ライブラリをリフレクションなしでマルチ モジュール プロジェクトに統合しようとしています。すべてのモジュールを DI に接続するために、このガイドに従います。たとえば、次の 3 つのモジュールがあります:app, :feature1, :feature2
。:app
モジュールは と の両方に依存し:feature1
ます:feature2
。両方の機能モジュールからクラスを注入する必要があります。したがって、:app
のbuild.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 プラグインのバグですか、それとも何か間違っていますか?