Better default checking if VM is android
This commit is contained in:
parent
64143d85f5
commit
dac1c9588b
@ -19,11 +19,11 @@ import java.io.File;
|
|||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
import java.io.ObjectOutputStream;
|
import java.io.ObjectOutputStream;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.security.AccessController;
|
|
||||||
import java.security.PrivilegedAction;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
|
import io.netty.util.internal.SystemPropertyUtil;
|
||||||
|
|
||||||
|
|
||||||
public
|
public
|
||||||
class OS {
|
class OS {
|
||||||
@ -77,27 +77,11 @@ class OS {
|
|||||||
osArch = osArch.toLowerCase(Locale.US);
|
osArch = osArch.toLowerCase(Locale.US);
|
||||||
|
|
||||||
if (osName.startsWith("linux")) {
|
if (osName.startsWith("linux")) {
|
||||||
// best way to determine if it's android or not
|
// best way to determine if it's android.
|
||||||
boolean isAndroid;
|
// Sometimes java binaries include Android classes on the classpath, even if it isn't actually Android, so we check the VM
|
||||||
try {
|
|
||||||
ClassLoader systemClassLoader;
|
|
||||||
if (System.getSecurityManager() == null) {
|
|
||||||
systemClassLoader = ClassLoader.getSystemClassLoader();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
systemClassLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
|
|
||||||
@Override
|
|
||||||
public
|
|
||||||
ClassLoader run() {
|
|
||||||
return ClassLoader.getSystemClassLoader();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
Class.forName("android.app.Application", false, systemClassLoader);
|
|
||||||
isAndroid = true;
|
|
||||||
} catch (ClassNotFoundException e) { isAndroid = false; }
|
|
||||||
|
|
||||||
|
String vmName = SystemPropertyUtil.get("java.vm.name");
|
||||||
|
boolean isAndroid = "Dalvik".equals(vmName);
|
||||||
|
|
||||||
if (isAndroid) {
|
if (isAndroid) {
|
||||||
// android check from https://stackoverflow.com/questions/14859954/android-os-arch-output-for-arm-mips-x86
|
// android check from https://stackoverflow.com/questions/14859954/android-os-arch-output-for-arm-mips-x86
|
||||||
|
Loading…
Reference in New Issue
Block a user