Closed rnbwdsh closed 4 years ago
Additional info i digged up: In 3.9 the notBlank method looks like this:
public static <T extends CharSequence> T notBlank(final T chars, final String message, final Object... values) {
if (chars == null) {
throw new NullPointerException(String.format(message, values));
}
if (StringUtils.isBlank(chars)) {
throw new IllegalArgumentException(String.format(message, values));
}
return chars;
}
After 3.9, it uses Objects.requireNonNull. Which was added in API level 24 / the Objects was added in 19. As we're at a smaller minSdk this seems to cause it. No idea why the compiler doesn't pick up on it.
@rnbwdsh Thanks for finding this bug, i'll merge and release a fix version as soon as possible.
Funny thing as proguard should backport java 8 features, maybe support will be better when desugaring is finally available in D8
@rnbwdsh update is now rolling out
Warning: This bug only appears on systems that haven't yet loaded an ics timetable cal yet. So wiping data + cache + reinstalling app (or even better: wiping the emulator) is highly suggested for reproduction.
When using the current app on a blank emulator/phone, and updating the time table after logging in you get the exception (and the timetable doesn't load):
This is an error in the KUSSS-Calendar-Exported-ICS importing. Repeatedly git-downgrading until i found a version that works revealed that the breaking change was back on 5.4.2020 when commons:commons-lang3:3.9 was upgraded to 3.10. Downgrading back to 3.9 fixes the issue. However I couldn't find out why Objects.requireNonNull doesn't exist in that context / why it isn't detected compile time.
Tested on emulator + real phone.
2nd commit optional, to spot it when it breaks again easier.