无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝

我是新来的Android世界。

我已经提出了用户注册的申请。 这工作正常。 但是当我试图添加一个微调到我的活动文件,它显示在AVD错误,

应用程序注册(进程com.students)意外停止。 请再试一次

谈到。

和我的日志猫显示错误

“11-12 10:42:06.816:E / dalvikvm(313):无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝”

究竟是什么错误? 我怎样才能摆脱?

Solutions Collecting From Web of "无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝"

您正试图访问外部存储。 确保您在Manifest文件中定义了必要的权限。 这可以通过添加完成

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

这个错误与你的应用程序无关。 其引用的堆栈跟踪文件在应用程序崩溃时生成,以便用户可以将其报告给发布者。 你看到这个错误的原因是你的应用程序没有通过android市场安装,所以它没有写入该文件的权限。 在debugging过程中你的应用程序产生的错误可以在LogCat中看到,并且堆栈跟踪将被转储到那里描述错误。

这是我刚到Android时遇到的一个问题。 然后我了解到,无法写入traces.txt的消息并不是程序的实际问题。

这个问题的解决方法就是find并纠正程序崩溃的实际原因(与这个消息无关)。 然后这个消息(反映崩溃报告系统中的configuration问题)将不再发生。

/data/anr/traces.txt上的操作需要root用户或系统用户chmod。
Ref ActivityManagerService#dumpStackTraces代码:

 public static File dumpStackTraces(boolean clearTraces, ArrayList<Integer> firstPids, ProcessCpuTracker processCpuTracker, SparseArray<Boolean> lastPids, String[] nativeProcs) { String tracesPath = SystemProperties.get("dalvik.vm.stack-trace-file", null); if (tracesPath == null || tracesPath.length() == 0) { return null; } File tracesFile = new File(tracesPath); try { if (clearTraces && tracesFile.exists()) tracesFile.delete(); tracesFile.createNewFile(); FileUtils.setPermissions(tracesFile.getPath(), 0666, -1, -1); // -rw-rw-rw- } catch (IOException e) { Slog.w(TAG, "Unable to prepare ANR traces file: " + tracesPath, e); return null; } dumpStackTraces(tracesPath, firstPids, processCpuTracker, lastPids, nativeProcs); return tracesFile; } 

我在shell中处理这个问题如下。
adb root
adb shell touch /data/anr/traces.txt
adb shell kill -3 ${APP_PID}