问题标签 [art-runtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
180 浏览

android - ART 单元测试失败,Dalvik 工作正常

我已经开发了一段时间的应用程序(在这里),我正在尝试在我的 Android 设备和模拟器上进行这两项测试。

目前我已经在 Travis 上进行了构建,所有测试都运行良好。此外,我设置了一个本地模拟器,可以正常运行。我的物理设备(Moto X)也可以很好地运行一切,但只有在 Dalvik 上时才可以。一旦我切换到 ART,我就会收到以下错误:

如果有帮助,这里有一个完整的会话跟踪。

所以我的问题是:有什么理由这将是 ART 而不是 Dalvik 的问题?我根本没有更改应用程序构建过程,唯一似乎有所作为的变量是 Dalvik/ART。该应用程序本身运行良好,只是测试有错误。

0 投票
2 回答
8832 浏览

java - What are the 'shadow$_klass_' and 'shadow$_monitor_' variables for in java.lang.Object?

In the latest Android update (SDK 21), it appears that two new variables have been added to java.lang.Object:

I notice that shadow$_monitor_ is briefly used in hashCode():

But otherwise there are no references to them. Are they somehow related to GC in ART? Or some sort of native stuff?

0 投票
0 回答
673 浏览

android - 使用 AsynchTask 时出现 ART 错误消息

我在使用 AsynchTask 时遇到了一个奇怪的错误消息,我不确定它指的是什么。

这是错误日志:

没有遇到任何不好的事情,但它仍然是一个错误。我应该注意这个吗?有人可以解释这是指什么吗?

基本上我所做的是每 20 秒执行一次 AsynchTask,如下所示:

0 投票
1 回答
1117 浏览

android - ART Runtime 上的暴露崩溃

我在 ART 上测试Dexposed,它在 art::ReferenceMapVisitor::VisitQuickFrame() 处随机崩溃。我认为 dexposed 可能会错误地处理堆栈帧:

在 hookMethodNative 中使用:

函数 VisitQuickFrame 在 中art/runtime/thread.cc,在访问map.data_[1]map.RegWidth() 时崩溃,从ArtMethod::GetEntryPointFromQuickCompiledCode

上面的汇编代码复制自art/runtime/arch/arm/quick_entrypoints_arm.S

它是否正确保存/恢复堆栈帧?

崩溃回溯:

0 投票
1 回答
90 浏览

android - Android5.1如何在Array类中添加变量

我正在做一些基于 Android5.1 的艺术工作,我想在 Array.h(art/runtime/mirror/Array.h) 的 Array 类中添加一个变量。

但是当我在类中添加“uint32_t 标签”时,模拟器中的系统无法启动。那么如何在 Android5.1 的 Array.h 中添加一些变量呢?

崩溃日志如下:

0 投票
1 回答
3410 浏览

android - 为面向 SDK 22+ 的 Android 库禁用 ART 运行时 (vmSafeMode) 和 dex2oat?

因此,要正确禁用 ART 运行时,请将android:vmSafeMode="true"添加到应用程序的清单标记中。

我个人遇到的问题是我开发了一个 Android 库,因此我没有应用程序标签。

这意味着当使用即时运行(dex2oat 必须运行所有内容)或使用该库的人正在使用即时运行时,我的调试非常慢。

我试图manifestPlaceholders = [vmSafeModeEnabled: "true"]在我的 build.gradle 中使用,但这没有效果。

有人有任何见解吗?

相似地,

产生的结果没有差异。我仍然看到 dex2oat 在每次应用启动时都花​​费大量时间。

当然,所有这些选项在应用程序上都可以正常工作,但对于库/SDK 开发则根本不行。

0 投票
0 回答
1043 浏览

android - ART 深处某处看似随机的崩溃

我遇到了崩溃,没有有用的 logcat。无用的错误转储每次都会提到不同的 java 源代码行。(主要在 JSONObject.put 中,但它确实有所不同)。这发生在onHandleIntent某处IntentService...

0 投票
0 回答
136 浏览

java - Android JNI 与 Java JNI 规范冲突

根据 Java JNI Specification Native Method Arguments

JNI 接口指针是本地方法的第一个参数。JNI 接口指针的类型为 JNIEnv。第二个参数根据本机方法是静态的还是非静态的而有所不同。非静态本机方法的第二个参数是对对象的引用。静态本地方法的第二个参数是对其 Java 类的引用。

所以一个原生的函数实现应该至少包含两个本地参数:第一个是JNIEnv,第二个是jobjectjclass,但是在android框架中有很多代码与这些规则相冲突,例如:

android.googlesource.com/platform/frameworks/base/+/cd92588/media/java/android/media/MediaScanner.java#1822

android.googlesource.com/platform/frameworks/base/+/master/media/jni/android_media_MediaScanner.cpp#375

功能注册:

android_media_MediaScanner_native_init 只接收一个参数,请问有什么dalvik 或者art runtime 技巧或者其他原因吗?</p>

0 投票
2 回答
39 浏览

android - android 启动应用程序时的过程是什么以及它在运行时如何与 R 类交互?

最近在学习Android的资源管理时,遇到了一些有趣的问题。

1)从Android运行时的内部来看,android OS是通过哪些步骤来启动一个已安装的应用程序?

2) R 类- R 类是资源静态数值的容器。但最后它是整数的集合。android如何在内部将这些整数映射到资源?

这里setContentView()传递的是一个int。但这映射到 activity_main.xml 文件。

字符串等资源也是如此。资源文件、代码和 R 类之间的连接在运行时似乎有点混乱。

0 投票
0 回答
26 浏览

android - 什么场景下Field会在dex中作为注解成员类型出现?

Java 似乎只支持原语、String、Enum、Array 和 Annotation 作为注释成员类型,如本讨论所示:
哪些类型可用于 java 注释成员

然而在 android art runtime 中,当处理 anntations 时,有一个类型Field支持。Art 将读取字段索引并创建相应的对象。代码如下:

由于java不支持Field作为注解成员类型,那么在什么情况下会Field作为注解成员类型出现在dex中呢?以及产生它的方法是什么?

提前致谢!