Метод long getLongVersionCode()
был добавлен в Android в версии 28;см. javadoc
Он явно присутствует в API, с которыми вы компилируете, в противном случае вы получите ошибку компиляции.
Но исключение говорит, что его нет ввремя выполнения, так что вы должны были работать на более старой платформе.
Я не знаю, что вы имеете в виду, когда говорите, что использовали это:
String versionName = BuildConfig.VERSION_NAME;
Имя и код версииразные вещи.Может быть, вы использовали BuildConfig.VERSION_CODE
?
И я не знаю, что вы имеете в виду под этим:
но теперь это похвальное возвращение -1 !!!!!
Мое предположениев том, что вы используете имя версии или атрибуты кода, что-то не так.Но это только предположение.Вы не показали нам код.
Еще одна вещь, которую стоит отметить, это то, что до API версии 28 вы могли использовать атрибут PackageInfo.versionCode
( javadoc ).Это было объявлено устаревшим в API версии 28. Таким образом, должна быть возможность использовать отражение для вызова метода getLongVersionCode()
, если он доступен, и отступить к использованию отражения для доступа к атрибуту versionCode
.(Или проверьте значение Build.VERSION.SDK_INT
во время выполнения, чтобы выяснить, какую версию API поддерживает платформа.)
Или вы можете просто установить минимальную поддерживаемую версию Android для своего приложения на 28.