问题标签 [android-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 投票
0 回答
404 浏览

java - Dagger2 运行时问题

我正在尝试为依赖注入实现 dagger2。以前我使用 Roboguice 进行依赖注入,但是当我将它更新到 RG3 时它停止工作。所有注入的视图都是空的。所以我正在尝试使用 Dagger2。从来没有使用过 dagger1 的经验。

以下是我尝试使用的类。

所以在上面的模块中,我实例化了我需要的所有对象。

以下是我的组件类

这是我的注射器类

注入器正在应用程序类 onCreate() 中初始化。

然后 onCreate 不同的活动,对于 ConnectionManager、AccountManager、EdgeConnection 等类,我在构造函数中使用它来使用组件注入字段成员来注入它们。

但是在应用程序启动时,我得到了以下日志……而且它还在继续。然后stackoverflows和应用程序崩溃。什么都没有出现。

01-04 15:30:36.761 12125-12125/? A/艺术:sart/runtime/runtime.cc:292]
在 dagger.internal.ScopedProvider.get(ScopedProvider.java:46) 01-04 15:30:36.761 12125-12125/?A/art: sart/runtime/runtime.cc:292] - 锁定 <0x13515e62> (a dagger.internal.ScopedProvider)

0 投票
0 回答
2545 浏览

java - 将本机线程附加到 VM 时出现 ART 错误

我的 android 项目中有 Java & Native 组件。Native 是必需的,因为它是遗留代码,我的组织不想在重新编写整个代码时浪费资源。在本机代码中,我需要将一些事件发布到 java 层,因此我使用“AttachCurrentThread()”和“DetachCurrentThread()”函数来实现相同的目的。做了一个API来避免代码的重复。相同的功能运行良好,经过几次调用后,由于以下错误而崩溃。

尝试谷歌搜索此错误但徒劳无功。谁能指导我解决这个错误。指导也非常感谢。

谢谢。

0 投票
0 回答
123 浏览

android - 在 Android 中获取运行时 没有带来正确的运行时

我正在尝试在我的设备中获取运行时,我已经在 2 台设备(Xperia Z1,Note 4)中测试了以下方法。

我尝试过的以下代码:

此代码返回 2.1,正如一些 stackoverflow 回答所说,版本大于 2.0 意味着它是 ART,但我的运行时是 Dalvik。

此代码始终返回 Dalvik。

以下也返回 Dalvik,但我认为它不会返回确切的应用运行时。

有什么建议么 ?

0 投票
1 回答
335 浏览

android-fragments - 致命异常:java.lang.RuntimeException:无法启动 Activity

嘿,我是 Android 工作室的新人,帮我搞定。我使用 ActionBarSherlock 库,它在用户暂停应用程序时保存当前片段实例的引用。

0 投票
0 回答
354 浏览

android - 强制动态库位于 Android 上的固定地址

我想强制将动态库加载到特定的内存地址。我应该怎么做才能做到这一点?修改动态链接器?给静态链接器任何指示?也许是链接描述文件?

我正在使用 Android,当我启动一个 Android 应用程序时,Bionic C 库被加载到:

我想要的是给动态链接器/静态链接器(或其他)一些提示,所以当我启动另一个应用程序(实际上是一个纯 C 程序)时,libc.so将在相同的区域再次加载。如果 ASLR 有问题,我们可以假设它已被禁用。

目前,我的 C 程序libc与 Android 应用程序的映射不同:

注意:两次运行都在同一次重新启动时,禁用了 ASLR!我猜它们在不同的领域,因为 Android 应用程序链接的共享库比纯 C 程序更多。

我想要的是?

  1. 理想情况下,我希望libc在纯 C 程序中映射到与 Android 程序相同的地址
  2. 至少,一种放置libc我觉得方便的地方(例如,可能在 VMA 空间的下部)
  3. 通过静态链接使 libc 成为我的 C 程序的一部分

我已经尝试了最后一件事,将其静态链接libc.a到我的 C 程序,因此它根本不会作为共享库加载,但android linker在运行时失败:

0 投票
2 回答
67 浏览

java - Android - 我的应用程序立即崩溃我尝试在我的 AVD 上运行

我一直在学习 android 应用程序开发,并面临税务应用程序的个人挑战。我在文本编辑器中看不到任何错误,但每当我在 AVD 上运行应用程序时,应用程序甚至在我看到启动页面之前就崩溃了。

我的清单文件

我的主要活动

我得到的错误

0 投票
0 回答
391 浏览

android - Android ART 加载 dex 失败

相关代码如下:

另一个堆栈跟踪:

如您所见,jars_fusion.dex 是我们应用在 Android 平台上的一个大 dex 文件。并且在调用该 dex 中的方法时出现 JNI 崩溃,尽管该方法在 dex 中已成功找到。此外,我的设备或我们的测试人员无法重现此问题,而是从崩溃自动收集器系统报告的。

那么它可能是问题的真正原因,还是只是系统故障?

0 投票
1 回答
1212 浏览

android - Android中的ART垃圾回收暂停时间表示主线程还是工作线程?

有人知道下面的 GC 日志“暂停 1.439 毫秒”是指 CMS 正在处理的后台线程上的暂停时间,还是主线程上的暂停时间?

I/art:后台粘性并发标记扫描 GC 释放 266189(12MB) 个 AllocSpace 对象,0(0B) 个 LOS 对象,14% 空闲,46MB/54MB,暂停 1.439ms 共 179.694m

非常感谢提前!!

0 投票
0 回答
2022 浏览

android - MediaCodec 弱全局引用表溢出

我正在开发一个应用程序,该应用程序实例化多个 MediaCodec 实例,用于将流音频和视频数据解码到 Nvidia TX1 开发套件上的 SurfaceTexture。仅使用一个音频和一个视频解码器几分钟后,我收到有关溢出弱全局参考表的错误:

我可以重新编译 Android 映像,因此我已将显示的条目列表从 10 扩展到 100。

作为记录,我没有在我的代码中使用弱引用,也没有在我的应用程序中直接使用 JNI。

这似乎是我的代码下的某个错误。当应用程序崩溃时,它在一些 JNISurfaceTexture 线程中。显然导致线程休眠会在此表中添加另一个条目,这似乎是压垮运行时的最后一根稻草。

看起来大多数条目都是“cleared jweak”,这表明它们实际上并没有被使用。摘要信息也不会加起来接近表中应该有的 51200 个条目。

我跟踪了弱全局引用并获得了堆栈跟踪:

起初,我认为这可能与在 MediaCodec 正在写入的 SurfaceTexture 上使用 setSurfaceTextureListener() 有关。但是,从程序中删除它并没有帮助。似乎可能涉及调试器?

我有什么办法可以从应用程序层解决这个问题吗?我可能会饿死垃圾收集吗?还是这是 Android/Nvidia 的问题?

0 投票
1 回答
166 浏览

java - Java 三元运算符:在 ART 上是否可能出现类似于条件移动(装配)的行为?

我想澄清一些关于Java中三元运算符的疑问。

在 Java 中,它看起来像:x = (c ? a : b)。根据我的阅读和经验,它似乎是作为 if/else 分支执行的,这意味着只评估一个语句(a 或 b,但绝不会同时评估)。我想知道它是否总是正确的。

在 C 中,它可能被编译成条件移动,它计算表达式 a 和 b。

准确地说,我想知道它是否也适用于 Android 代码。知道 Java 字节码实际上是在安装到具有最新操作系统的设备上时翻译成本机指令(请参阅Android Runtime(ART))。ART 之后是否有条件移动出现的风险?

让我们举个例子。一个基本类,其中包含:

如果在程序执行过程中多次调用 getIncrementedCounter,函数testOperator 是否总是返回 true ?(假设代码在单线程上运行)

我知道我应该只使用 if/else 分支来确保摆脱麻烦,但我仍然想知道......