标签: android-runtime

5
推荐指数
1
解决办法
2万
查看次数

DexOpt:非法方法访问

我有一个基于位置的应用程序,直到昨天工作正常,但是当我在手机上运行它现在它很奇怪.

下面是我的logcat,它显示了我以前从未见过或听过的错误

07-07 14:17:25.548: D/ActivityThread(24383): handleBindApplication:com.example.loc_update
07-07 14:17:25.553: D/ActivityThread(24383): setTargetHeapUtilization:0.75
07-07 14:17:25.553: D/ActivityThread(24383): setTargetHeapMinFree:524288
07-07 14:17:25.573: I/dalvikvm(24383): DexOpt: illegal method access (call Landroid/content/res/TypedArray;.<init> (Landroid/content/res/Resources;[I[II)V from Landroid/content/res/XResources$XTypedArray;)
07-07 14:17:25.573: I/dalvikvm(24383): Could not find method android.content.res.TypedArray.<init>, referenced from method android.content.res.XResources$XTypedArray.<init>
07-07 14:17:25.573: W/dalvikvm(24383): VFY: unable to resolve direct method 82: Landroid/content/res/TypedArray;.<init> (Landroid/content/res/Resources;[I[II)V
07-07 14:17:25.573: D/dalvikvm(24383): VFY: replacing opcode 0x70 at 0x0002
07-07 14:17:25.683: W/dalvikvm(24383): threadid=1: thread exiting with uncaught exception (group=0x4162bce0)
07-07 14:17:25.688: E/AndroidRuntime(24383): FATAL EXCEPTION: main
07-07 14:17:25.688: E/AndroidRuntime(24383): Process: com.example.loc_update, …
Run Code Online (Sandbox Code Playgroud)

java android dexopt android-4.4-kitkat android-runtime

5
推荐指数
0
解决办法
1716
查看次数

Android Runtime(ART)是虚拟机吗?

我想知道ART是否是虚拟机.dex2oat将dalvik字节代码编译为本机(特定于平台)代码,elf文件.正如android开发者文章中提到的,它仍然有垃圾收集器.我不明白它是如何工作的,我们有本机编译的elf文件,但它仍然在虚拟机环境中运行?GC在这种情况下如何工作?请提供一个很好的参考资料,或者请解释一下.提前致谢.

android dalvik android-runtime vm-implementation

5
推荐指数
1
解决办法
1127
查看次数

java.lang.IncompatibleClassChangeError与android 4.4.2模拟器和ART运行时崩溃

我在使用ART模式运行的4.4.2模拟器时遇到了神秘的崩溃.该应用程序适用于Android 5和4.4.2/Dalvik.任何帮助将不胜感激.

04-17 08:25:24.126  16404-16404/com.my.package.name E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.my.package.name, PID: 16404
java.lang.IncompatibleClassChangeError: Class 'java.lang.reflect.ArtMethod' does not implement interface 'java.lang.Runnable' in call to 'void java.lang.Runnable.run()' (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
Run Code Online (Sandbox Code Playgroud)

android android-emulator android-4.4-kitkat android-runtime

5
推荐指数
0
解决办法
916
查看次数

Android获取GPU型号

从终端运行以下命令时:

adb shell dumpsys | adb shell dumpsys | adb shell dumpsys | adb shell dumpsys | adb shell dumpsys 查询 GLES

输出是:

GLES:高通、Adreno (TM) 330、OpenGL ES 3.0 V@53.0 AU@ (CL@)

但是,以编程方式运行时我无法获得输出。

String GPUModel = "";
String command = "adb shell dumpsys | grep GLES";

try {

    InputStream inputStream = Runtime.getRuntime()
                                         .exec(command)
                                         .getInputStream();

    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    GPUModel = bufferedReader.readLine();

} catch (IOException e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

GPUModel 为空。

android opengl-es android-runtime android-shell

5
推荐指数
1
解决办法
5903
查看次数

与MonkeyTalk库的Android DatePicker兼容性问题

我已经实现了一个Android应用程序,并添加了MonkeyTalk库,通过记录用户与应用程序的交互来测试系统的可用性.

使用这个库后,一切正常,但DatePicker!

我使用以下方法来显示DatePicker对话框:

private void setSpecificDate() {

    int mYear = calendar.get(Calendar.YEAR);
    int mMonth = calendar.get(Calendar.MONTH);
    int mDay = calendar.get(Calendar.DAY_OF_MONTH);
    DatePickerDialog dpd = new DatePickerDialog(getActivity(), 
            new OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear,
                        int dayOfMonth) {

                // part of code uses retrieved data from DataPicker...

                }
            }, mYear, mMonth, mDay);
    dpd.show();
}
Run Code Online (Sandbox Code Playgroud)

然后,一旦我单击以显示DatePicker,它崩溃,我得到运行时错误,程序失败!

当我只是评论dpd.show();它有效,但没有任何反应.

我还测试过使用TimePicker而不是DatePicker来检查应用程序行为,它确实有效!

运行时错误:

E/AndroidRuntime( 2679): FATAL EXCEPTION: main
E/AndroidRuntime( 2679): Process: com.parse.f8, PID: 2679
E/AndroidRuntime( 2679): java.lang.reflect.UndeclaredThrowableException
E/AndroidRuntime( 2679):    at …
Run Code Online (Sandbox Code Playgroud)

android runtime-error datepicker monkeytalk android-runtime

5
推荐指数
0
解决办法
142
查看次数

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

我的android项目中有Java和Native组件.原生是必需的,因为它是遗留代码,我的组织不想浪费资源再次重写整个代码.在本机代码中,我需要将一些事件发布到java层,因此我使用"AttachCurrentThread()"和"DetachCurrentThread()"函数来实现相同的功能.制作API以避免重复代码.相同的功能工作正常,几次调用后,崩溃与下面的错误.

F art     : art/runtime/indirect_reference_table.cc:77] Check failed: table_mem_map_.get() != nullptr ashmem_create_region failed for 'indirect ref table': Too many open files
Run Code Online (Sandbox Code Playgroud)

谷歌搜索这个错误但是徒劳无功.任何人都可以指导我解决此错误.指导也非常感谢.

谢谢.

java android native android-ndk android-runtime

5
推荐指数
0
解决办法
2055
查看次数

如何在 Android 运行时 (ART) 上启用语言级断言?

我有一个正在开发的 Pixel-C。我的最低 API 级别是 21,这也是 ART 取代 Dalvik 的级别。我已经尝试过以下两种方法:

adb shell setprop dalvik.vm.enableassertions all
adb shell setprop debug.assert 1
Run Code Online (Sandbox Code Playgroud)

他们似乎执行成功。我已经放置

assert false : "assertions are active!";
Run Code Online (Sandbox Code Playgroud)

在我的 onStart 中,我在 logcat 中没有看到任何堆栈跟踪。我希望应用程序在我安装并运行后立即退出。请告诉我如何让这个断言执行。

请不要提及 JUnit 或其他进行断言的方法,也不要提及任何需要显式抛出错误的解决方案。生产代码永远不应该抛出错误,也不应该尝试捕捉和处理它们。这就是为什么将断言添加到语言中的原因,以便在测试环境中违反不变量时导致应用程序崩溃,而不会在生产中产生任何开销或风险。

这个 6 年前的问题基本相同,但对于 Dalvik(IE 过时),解决方案要么不起作用,要么不好: 我可以在 Android 设备上使用断言吗?

java testing android assertions android-runtime

5
推荐指数
1
解决办法
1849
查看次数

ART:method() 的验证耗时 X 毫秒 - 需要几分钟

最近,当我尝试调试 android 测试仪器 APK 时,每次启动应用程序时,我都会在 logcat 中看到类似的内容

W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function0() took 158.211ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function1() took 101.701ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function2() took 110.852ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function3() took 211.494ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function4() took 102.497ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function5() took 126.639ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function6() took 138.077ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function7() took 131.311ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function8() took 253.859ms
W/com.myapp: Verification of void com.myapp.test.hiptest.Actionwords.function9() took 111.431ms
W/com.myapp: Verification of …
Run Code Online (Sandbox Code Playgroud)

android dalvik android-testing android-runtime

5
推荐指数
0
解决办法
687
查看次数

在Android上调用方法的成本

我创建了一个只在一个地方调用的方法 - 来自onBindViewHolder()RecyclerView.它是一个逻辑的代码单元,我认为将该代码块提取到一个方法中可以提高可读性.但是,在代码审查期间,我被告知方法调用很昂贵,因此会对性能产生负面影响,我应该内联代码而不是将其放在单独的方法中.

我认为JVM或编译器会通过内联方法来优化此代码,但我不确定Android是否就是这种情况.我还没有真正找到关于新ART JVM做什么样的优化的具体信息.

在Android上调用一个如此昂贵的方法,我应该避免它,但是在方法可能被多次调用的地方以可读性为代价?另外,由于DEX方法的限制,正在创建这样的一次性使用方法吗?(此应用已使用multidex).

这个问题与其他类似的java问题没有重复,因为我特别询问Android上的性能,它有自己的特性.

java performance android jvm android-runtime

4
推荐指数
1
解决办法
230
查看次数