TL; DR: Какой будет чистый способ изменить мои источники в зависимости от параметров, передаваемых в gradle?
Я создаю приложение для Android, которое зависит от библиотеки A
,Я хотел бы иметь возможность поддерживать несколько версий A
(допустим, я хочу поддерживать как v1
, так и v2
).Я имею в виду, что хочу иметь возможность создавать myapp-withAv1.apk
и myapp-withAv2.apk
.
. Я видел, что во время компиляции легко выбрать версию A
, которую я хочу (Например, я могу сослаться на эту версию в переменной моего файла build.gradle
, а затем запустить сборку с ./gradlew -PversionOfA=v1 build
).
Но другая сложность заключается в том, что A
может изменить свой открытый API, поэтому япотребуется изменить мой код в соответствии с версией, которую я создаю против.Было бы легко, если бы я занимался C ++ или C # (спасибо #ifdef
), но я не смог найти способ сделать это без слишком большого дублирования кода, и я был бы не в восторге, если бы вы могли указать мне путьчтобы достичь этого.
(Обратите внимание, что попытка изолировать ветвь кода с помощью чего-то вроде if(version == v1)
не работает, так как это приведет к ветке кода, которая вызовет метод A
, который недоступенпоэтому сборка не удалась)