是.apk文件支持Tizen基于操作系统的安装?
我有一个基于位置的应用程序,直到昨天工作正常,但是当我在手机上运行它现在它很奇怪.
下面是我的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) 我想知道ART是否是虚拟机.dex2oat将dalvik字节代码编译为本机(特定于平台)代码,elf文件.正如android开发者文章中提到的,它仍然有垃圾收集器.我不明白它是如何工作的,我们有本机编译的elf文件,但它仍然在虚拟机环境中运行?GC在这种情况下如何工作?请提供一个很好的参考资料,或者请解释一下.提前致谢.
我在使用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) 从终端运行以下命令时:
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应用程序,并添加了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项目中有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)
谷歌搜索这个错误但是徒劳无功.任何人都可以指导我解决此错误.指导也非常感谢.
谢谢.
我有一个正在开发的 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 设备上使用断言吗?
最近,当我尝试调试 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) 我创建了一个只在一个地方调用的方法 - 来自onBindViewHolder()RecyclerView.它是一个逻辑的代码单元,我认为将该代码块提取到一个方法中可以提高可读性.但是,在代码审查期间,我被告知方法调用很昂贵,因此会对性能产生负面影响,我应该内联代码而不是将其放在单独的方法中.
我认为JVM或编译器会通过内联方法来优化此代码,但我不确定Android是否就是这种情况.我还没有真正找到关于新ART JVM做什么样的优化的具体信息.
在Android上调用一个如此昂贵的方法,我应该避免它,但是在方法可能被多次调用的地方以可读性为代价?另外,由于DEX方法的限制,正在创建这样的一次性使用方法吗?(此应用已使用multidex).
这个问题与其他类似的java问题没有重复,因为我特别询问Android上的性能,它有自己的特性.
android-runtime ×10
android ×9
java ×4
dalvik ×2
android-ndk ×1
apk ×1
assertions ×1
datepicker ×1
dexopt ×1
jvm ×1
mobile ×1
monkeytalk ×1
native ×1
opengl-es ×1
performance ×1
store ×1
testing ×1
tizen ×1