приложение написано с одной библиотекой работы со смарт картой (через usb reader)
метод transmit выглядит примерно так
fun transmitTask(params: TransmitParams): TransmitProgress
принимает TransmitParams в который передаем номер слота (в котором ридер со смарт картой), контрольный код и сам запрос (массив байт), возвращается ответ, в котором последние два байта будут кодом ответа
теперь появилось требование сделать для другого устройства чтение смарт карты. Там слот для смарт карты встроенный и библиотека для работы тоже другая, кардинально отличающаяся, там уже transmit совсем по другому выглядит
fun transmit(in: ByteArray, out: ByteArray, outCode: ByteArray)
т.е. уже входными параметрами передаем массив с запросом и пустые массивы для получения ответа и кода ответа
получается и работать с ними мне придется совсем по разному. А нужно будет иметь две версии приложения. И это я показал один пример. инициализация ридера и еще куча функций тоже отличаются. По сути все отличается в работе со смарт картой. В остальном приложение остается прежним
Как это решается?
Скорее всего, действительно, никто не сталкивался.) Ну с разными устройствами работается по-разному, и что? Например, в GatgedBridge больше десятка разных протоколов.
ну вот в таком случае выходит делать по 2 варианта методов и в зависимости от того, на какое устройство билд нужен, комментить ненужные?
флейворы можно сделать, не надо ничего комментить
я чет не вкурил как с флейвором разделить методы, лэйауты, ресурсы да, а с классами не получилось
а почему нельзя все сделать в одном приложении? библиотеки огромные и раздувают размер? слишком много логики специфичной для каждого устройства?
да, все методы абсолютно разные
и работа с ними абсолютно отличается :( По сути для второй библиотеки я буду заново писать весь код
нашел как, оказывается надо манифесты в каждой папке прописать..
Обсуждают сегодня