У меня есть приложение, которое взаимодействует с прошивкой устройства. Поскольку в прошивку вносятся изменения, она имеет версию в формате {major}.{minor}.{revision}[beta[{beta}]]
. Чтобы дать вам несколько примеров, текущая версия — 0.4.7beta
, за которой последует 0.4.7beta2
и иногда 0.4.7
, за которой следует 0.4.8beta
. Версионный формат прошивки, к сожалению, не под моим контролем, поэтому я не могу его изменить.
Мне нужен способ сравнения прошивок между собой. В принципе, мне нужна функция
boolean isFirmwareNewer(String testFW, String baseFW);
Что я сделал до сих пор, так это преобразовал этот формат в простой int
. Так 0.4.7beta2
станет00040702
(2 цифры для каждого уровня ). Проблема в том, что
0.0.0
, который новее по определению 0.4.7beta2
. не новее0.4.7
). Это легко объяснить(if (testFW.contains("beta")) testFWValue -= 100;
, но это не очень элегантно.Как вы, ребята, делаете это обычно (или как бы вы это сделали )?
Если хотите, я могу приложить код, с которым я сейчас работаю, но, как я уже сказал, это> 40 строк кода и не совсем читаемый (, поэтому я ищу лучший способ сделать это ). ].