dotenv-kotlin icon indicating copy to clipboard operation
dotenv-kotlin copied to clipboard

Crashes on Android version 7 and older

Open bjarneheden opened this issue 4 years ago • 2 comments

Detected crashes for users using older versions of Android (API <= 24, i.e. Android 7 and older). Setup is in line with your docs/examples and works just fine for newer versions of Android.

Stack traces:

Fatal Exception: java.lang.NoClassDefFoundError Failed resolution of: Ljava/nio/file/Paths;

io.github.cdimascio.dotenv.internal.DotenvReader.read (DotenvReader.java:33) io.github.cdimascio.dotenv.internal.DotenvParser.lines (DotenvParser.java:52) io.github.cdimascio.dotenv.internal.DotenvParser.parse (DotenvParser.java:34) io.github.cdimascio.dotenv.DotenvBuilder.load (DotenvBuilder.java:77) io.github.cdimascio.dotenv.DslKt.dotenv (DslKt.java:19) se.collectorbank.collectorbankbankapp.activities.CollectorActivity. (CollectorActivity.java:48) se.collectorbank.collectorbankbankapp.activities.LoginActivity.access$startMainActivity (LoginActivity.java:58) java.lang.Class.newInstance (Class.java) android.app.Instrumentation.newActivity (Instrumentation.java:1083) android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2682) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2864) android.app.ActivityThread.-wrap12 (ActivityThread.java) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1567) android.os.Handler.dispatchMessage (Handler.java:105) android.os.Looper.loop (Looper.java:156) android.app.ActivityThread.main (ActivityThread.java:6517) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:942) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:832)

Caused by java.lang.ClassNotFoundException Didn't find class "java.nio.file.Paths" on path: DexPathList[[zip file "/data/app/se.collector.bankapp-1/base.apk"],nativeLibraryDirectories=[/data/app/se.collector.bankapp-1/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64, /product/lib64]]

dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56) java.lang.ClassLoader.loadClass (ClassLoader.java:380) java.lang.ClassLoader.loadClass (ClassLoader.java:312) arrow_right io.github.cdimascio.dotenv.internal.DotenvReader.read (DotenvReader.java:33) io.github.cdimascio.dotenv.internal.DotenvParser.lines (DotenvParser.java:52) io.github.cdimascio.dotenv.internal.DotenvParser.parse (DotenvParser.java:34) io.github.cdimascio.dotenv.DotenvBuilder.load (DotenvBuilder.java:77) io.github.cdimascio.dotenv.DslKt.dotenv (DslKt.java:19) se.collectorbank.collectorbankbankapp.activities.CollectorActivity. (CollectorActivity.java:48) se.collectorbank.collectorbankbankapp.activities.LoginActivity.access$startMainActivity (LoginActivity.java:58) java.lang.Class.newInstance (Class.java) android.app.Instrumentation.newActivity (Instrumentation.java:1083) android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2682) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2864) android.app.ActivityThread.-wrap12 (ActivityThread.java) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1567) android.os.Handler.dispatchMessage (Handler.java:105) android.os.Looper.loop (Looper.java:156) android.app.ActivityThread.main (ActivityThread.java:6517) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:942) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:832)

bjarneheden avatar Apr 08 '21 09:04 bjarneheden

java.nio.file.Paths was added in Added in API level 26 https://developer.android.com/reference/java/nio/file/Paths

in order to support his, we'll need to use a different API to handle paths

This can be resolve by updating these lines

https://github.com/cdimascio/dotenv-java/blob/master/src/main/java/io/github/cdimascio/dotenv/internal/DotenvReader.java#L32-L33

PRs are welcome. Would you be up for taking a stab at it?

cdimascio avatar Apr 18 '21 04:04 cdimascio

FYI I've added a feature to get this to work on Android <= 8. See https://github.com/cdimascio/dotenv-java/pull/55 for details.

marcel-rf avatar May 30 '23 12:05 marcel-rf