MyApplication 以静默方式终止。它打印的最后一件事是来自函数的tracelog,然后Vm关闭而不引用我的应用程序。
这是日志片段
05-17 15:25:28.294 4385 4385 D MyApplication: MyFunction()
05-17 15:25:28.294 4385 4385 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.369 4400 4400 W app_process: type=1400 audit(0.0:76): avc: denied { write } for name="system@framework@boot.art" dev="dm-0" ino=149 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file permissive=0
05-17 15:25:28.419 4400 4400 W main : type=1400 audit(0.0:77): avc: denied { write } for name="arm64" dev="dm-0" ino=143 scontext=u:r:shell:s0 tcontext=u:object_r:dalvikcache_data_file:s0 tclass=dir permissive=0
05-17 15:25:28.371 4400 4400 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
05-17 15:25:28.375 4400 4400 D AndroidRuntime: CheckJNI is OFF
05-17 15:25:28.417 4400 4400 D ICU : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
05-17 15:25:28.458 4400 4400 I Radio-JNI: register_android_hardware_Radio DONE
05-17 15:25:28.478 4385 4385 D AndroidRuntime: Shutting down VM
05-17 15:25:28.526 4400 4400 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.546 4400 4400 D AndroidRuntime: Shutting down VM
应用程序继续运行。
除了通用名称05-17 15:25:28.546 4400 4400 D AndroidRuntime: Shutting down VM
答案 0 :(得分:2)
错误是由我写的本机代码中的StackOverflow引起的。
Stackoverflows在Android Native Code中静默关闭,与segfaults相反,因此很难找到。
使用Tracelogging / Logdebug找到最后一段代码或使用Android Studio的调试器,您将找到错误的位置。
静默终止的指示符是:“关闭VM ”
05-17 15:25:28.478 4385 4385 D AndroidRuntime: Shutting down VM
05-17 15:25:28.526 4400 4400 D AndroidRuntime: Calling main entry com.android.commands.am.Am
05-17 15:25:28.546 4400 4400 D AndroidRuntime: Shutting down VM
应用程序继续运行,因为代码是在自己的进程中执行的(通过ProcessBuilder.command()
)