问题标签 [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.
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?
android - 使用 AsynchTask 时出现 ART 错误消息
我在使用 AsynchTask 时遇到了一个奇怪的错误消息,我不确定它指的是什么。
这是错误日志:
我没有遇到任何不好的事情,但它仍然是一个错误。我应该注意这个吗?有人可以解释这是指什么吗?
基本上我所做的是每 20 秒执行一次 AsynchTask,如下所示:
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
:
它是否正确保存/恢复堆栈帧?
崩溃回溯:
android - Android5.1如何在Array类中添加变量
我正在做一些基于 Android5.1 的艺术工作,我想在 Array.h(art/runtime/mirror/Array.h) 的 Array 类中添加一个变量。
但是当我在类中添加“uint32_t 标签”时,模拟器中的系统无法启动。那么如何在 Android5.1 的 Array.h 中添加一些变量呢?
崩溃日志如下:
android - 为面向 SDK 22+ 的 Android 库禁用 ART 运行时 (vmSafeMode) 和 dex2oat?
因此,要正确禁用 ART 运行时,请将android:vmSafeMode="true"添加到应用程序的清单标记中。
我个人遇到的问题是我开发了一个 Android 库,因此我没有应用程序标签。
这意味着当使用即时运行(dex2oat 必须运行所有内容)或使用该库的人正在使用即时运行时,我的调试非常慢。
我试图manifestPlaceholders = [vmSafeModeEnabled: "true"]
在我的 build.gradle 中使用,但这没有效果。
有人有任何见解吗?
相似地,
产生的结果没有差异。我仍然看到 dex2oat 在每次应用启动时都花费大量时间。
当然,所有这些选项在应用程序上都可以正常工作,但对于库/SDK 开发则根本不行。
android - ART 深处某处看似随机的崩溃
我遇到了崩溃,没有有用的 logcat。无用的错误转储每次都会提到不同的 java 源代码行。(主要在 JSONObject.put 中,但它确实有所不同)。这发生在onHandleIntent
某处IntentService
...
java - Android JNI 与 Java JNI 规范冲突
根据 Java JNI Specification Native Method Arguments:
JNI 接口指针是本地方法的第一个参数。JNI 接口指针的类型为 JNIEnv。第二个参数根据本机方法是静态的还是非静态的而有所不同。非静态本机方法的第二个参数是对对象的引用。静态本地方法的第二个参数是对其 Java 类的引用。
所以一个原生的函数实现应该至少包含两个本地参数:第一个是JNIEnv,第二个是jobject或jclass,但是在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>
android - android 启动应用程序时的过程是什么以及它在运行时如何与 R 类交互?
最近在学习Android的资源管理时,遇到了一些有趣的问题。
1)从Android运行时的内部来看,android OS是通过哪些步骤来启动一个已安装的应用程序?
2) R 类- R 类是资源静态数值的容器。但最后它是整数的集合。android如何在内部将这些整数映射到资源?
这里setContentView()
传递的是一个int。但这映射到 activity_main.xml 文件。
字符串等资源也是如此。资源文件、代码和 R 类之间的连接在运行时似乎有点混乱。
android - 什么场景下Field会在dex中作为注解成员类型出现?
Java 似乎只支持原语、String、Enum、Array 和 Annotation 作为注释成员类型,如本讨论所示:
哪些类型可用于 java 注释成员
然而在 android art runtime 中,当处理 anntations 时,有一个类型Field
支持。Art 将读取字段索引并创建相应的对象。代码如下:
由于java不支持Field
作为注解成员类型,那么在什么情况下会Field
作为注解成员类型出现在dex中呢?以及产生它的方法是什么?
提前致谢!