【问题标题】:Find out android runtime version找出android运行时版本
【发布时间】:2014-11-20 17:59:15
【问题描述】:

有没有要找出当前使用的android运行时版本? 例如,在 android v4.4 上,您可以在 dalvik 和 art 之间滑动,我想在运行时找出这些信息。

10 倍。

【问题讨论】:

  • 检查android.os.Build.VERSIONstackoverflow.com/questions/3093365/…
  • 我需要知道的不是 android 版本,而是 android RUNTIME 虚拟机。艺术或达尔维克。
  • 鉴于 ART 在 Kitkat 4.4 的开发者模式中是可选的并且隐藏在 5.0 中是必需的,因此 Build.VERSION 可能是唯一官方支持的机制。
  • 好的,我找到了这个:System.getProperty("java.vm.version")

标签: android android-ndk dalvik android-runtime


【解决方案1】:

System.getProperty("java.vm.version") - 如果系统使用 ART,则返回值将是“2.0.0”或更高,这意味着低于 2 的主要版本将是 Dalvik。这篇见解来自 Addressing Garbage Collection (GC) Issues 部分的“在 Android 运行时验证应用行为的最佳实践”。

代码示例

// catch only version 2 and not higher
// false for Dalvik, true for current ART, false for any new runtimes
boolean isArt = System.getProperty("java.vm.version").startsWith("2.");

// catch version 2 and above
// false for Dalvik, true for current ART, true for any new runtimes
boolean isArt = false;
try {
    isArt = Integer.parseInt(System.getProperty("java.vm.version")
            .split(".")[0]) >= 2;
} catch (NumberFormatException e) {
    // we suppress the exception and fall back to checking only for current ART
    isArt = System.getProperty("java.vm.version").startsWith("2.");
}

【讨论】:

  • 正如文档所说,该值将始终存在,您只需在其上使用 .startsWith("2.") 即可捕获“2.x.x”。如果您还想捕获更高版本,则至少需要进行一些粗略的解析。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多