Я пытаюсь изучить инъекцию зависимостей с помощью кинжала.Кинжал: как создать экземпляр разных объектов ObjectGraphs в зависимости от сборки
Я понимаю, что в ваших классах, вы не непосредственно экземпляр объекта код клиента зависит, но объявить его @Inject, создать ObjectGraphs через модуль, и получить объект из ObjectGraph:
@Inject CoffeeMaker coffeeMaker;
public static void main(String[] args) {
ObjectGraph objectGraph = ObjectGraph.create(new DripCoffeeModule());
CoffeeApp coffeeApp = objectGraph.get(CoffeeApp.class);
....
}
Однако этот код теперь зависит от модуля, который вы используете для создания ObjectGraph (DripCoffeeModule, в этом примере).
Теперь я хочу использовать это в своем приложении для Android. Для сборки отладки я хочу определенную реализацию моих классов, для сборки релиза реализация будет отличаться.
Как я должен это делать? Как настроить скрипт build.xml ant, чтобы модуль поставлял конкретные реализации, которые я хочу? (или выбрать правильный модуль) ...
Спасибо.
В чем проблема, которую вы пытаетесь решить с помощью условной проводки? Почему вы хотите, чтобы разные компоненты отлаживались, а не отлаживались. –
Ну, на самом деле релиз отладки vs был упрощением, которое упростило задачу. Моя реальная проблема - сборка GooglePlay и сборка Amazon, в которой используются различные версии биллингового модуля InApp. То, как я делаю это сейчас (без кинжала), записывает в build-time (используя ant) конкретное значение в конфиге.файл свойств. Это значение считывается во время выполнения и используется как вход фабрики BillingModule. Я подумал, что я мог бы решить эту проблему с помощью кинжала более элегантным способом, без необходимости фабрики. – GaRRaPeTa