Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve for support for Android < 8.0 (Fix NoClassDefFoundError) #356

Merged
merged 1 commit into from
Dec 24, 2021

Conversation

vonox7
Copy link
Contributor

@vonox7 vonox7 commented Dec 4, 2021

java.nio.file is only available starting at android API level 26 (= Android 8.0), see https://developer.android.com/reference/java/nio/file/package-summary.
According to Google, 17,3% of all android phones currently (December 2021) in use are below Android version 8.0.
Note that java.nio.channels and java.nio.charsets are available since Android API level 1 (= Android 1.0).

Moving the usages of java.io.file into an own class omits a java.lang.NoClassDefFoundError during runtime. Previously this error gets thrown when MicsUtil was first loaded from classpath (e.g. when using MiscUtil.valueNullOrEmpty() in Email.java). Now with this PR all java.nio.file imports happen only in one file, which is not loaded during runtime when not using the CLI (which you most probably don't do on Android).

@bbottema
Copy link
Owner

These methods are used from a lot of places actually. For example emailBuilder.withPlainText(File file). I suppose with some careful API usage you could avoid these methods, but it's not as straightforward as "not using the CLI".

Other than that I think it's generally a good idea to separate these methods out to a FileUtil.

@vonox7
Copy link
Contributor Author

vonox7 commented Dec 24, 2021

Yes exactly :)
But as long as you don't work with files it would be then useful not to rely on File classpath-dependencies to avoid crashing on Android for things that are not used :)

@bbottema bbottema merged commit b966536 into bbottema:develop Dec 24, 2021
@bbottema bbottema changed the title Fix NoClassDefFoundError on Android < 8.0 Improve for support for Android < 8.0 (Fix NoClassDefFoundError) Dec 25, 2021
@bbottema
Copy link
Owner

Released in 6.7.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants