diff --git a/src/dorkbox/util/OS.java b/src/dorkbox/util/OS.java index 29a1b8f..8f6398f 100644 --- a/src/dorkbox/util/OS.java +++ b/src/dorkbox/util/OS.java @@ -19,11 +19,11 @@ import java.io.File; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.nio.charset.Charset; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.Locale; import java.util.TimeZone; +import io.netty.util.internal.SystemPropertyUtil; + public class OS { @@ -77,27 +77,11 @@ class OS { osArch = osArch.toLowerCase(Locale.US); if (osName.startsWith("linux")) { - // best way to determine if it's android or not - boolean isAndroid; - try { - ClassLoader systemClassLoader; - if (System.getSecurityManager() == null) { - systemClassLoader = ClassLoader.getSystemClassLoader(); - } - else { - systemClassLoader = AccessController.doPrivileged(new PrivilegedAction() { - @Override - public - ClassLoader run() { - return ClassLoader.getSystemClassLoader(); - } - }); - } - - Class.forName("android.app.Application", false, systemClassLoader); - isAndroid = true; - } catch (ClassNotFoundException e) { isAndroid = false; } + // best way to determine if it's android. + // Sometimes java binaries include Android classes on the classpath, even if it isn't actually Android, so we check the VM + String vmName = SystemPropertyUtil.get("java.vm.name"); + boolean isAndroid = "Dalvik".equals(vmName); if (isAndroid) { // android check from https://stackoverflow.com/questions/14859954/android-os-arch-output-for-arm-mips-x86