我认为这是问题所在
一点背景
Traceview 是用于执行日志的图形查看器,您可以使用 Debug 类在代码中记录跟踪信息。Traceview 可以帮助您调试应用程序并分析其性能。启用它会.trace
在 sdcard 根文件夹中创建一个文件,然后该文件可由 ADB 提取并由 traceview bat 文件处理以进行处理。它也可以由 DDMS 添加。
它是记录器内部使用的系统。一般来说,除非您使用 traceview 提取跟踪文件,否则此错误不会打扰您。 您应该查看与您的应用程序直接相关的错误/日志
如何启用它:
有两种方法可以生成跟踪日志:
在代码中包含 Debug 类并调用其方法,例如startMethodTracing()
和stopMethodTracing()
,以启动和停止将跟踪信息记录到磁盘。此选项非常精确,因为您可以在代码中准确指定开始和停止记录跟踪数据的位置。
使用 DDMS 的方法分析功能生成跟踪日志。此选项不太精确,因为您不修改代码,而是指定何时开始和停止使用 DDMS 进行日志记录。尽管您对日志记录开始和停止的确切位置控制较少,但如果您无权访问应用程序的代码,或者如果您不需要精确的日志计时,则此选项很有用。
但上述情况存在以下限制
如果您使用的是 Debug 类,您的应用程序必须有权写入外部存储 ( WRITE_EXTERNAL_STORAGE
)。
如果您使用的是 DDMS:Android 2.1 和更早版本的设备必须有 SD 卡,并且您的应用程序必须有权写入 SD 卡。Android 2.2 及更高版本的设备不需要 SD 卡。跟踪日志文件直接流式传输到您的开发机器。
所以本质上traceFile访问需要两件事
1.) 写入跟踪日志文件的权限,即WRITE_EXTERNAL_STORAGE
良好READ_EXTERNAL_STORAGE
的措施
2.) 带有足够空间的 SDCard 的仿真器。文档没有说这是否仅适用于 DDMS 也适用于调试,所以我假设这对于通过应用程序进行调试也是如此。
我该怎么办这个错误:
现在,该错误本质上是由于没有 sdcard 路径来创建跟踪文件或没有访问它的权限。这是一个旧线程,但赏金背后的开发人员检查是否满足两个先决条件。然后,您可以在模拟器的 sdcard 文件夹中搜索该.trace
文件。如果它存在,它不应该给你这个问题,如果它没有尝试通过添加startMethodTracing
到你的应用程序来创建它。
我不确定为什么当记录器启动时它会自动查找此文件。我认为当发生错误/日志事件时,记录器在内部尝试写入跟踪文件但没有找到它,在这种情况下它会抛出错误.浏览了文档后,我没有找到太多关于为什么会自动打开的参考资料。但通常这不会直接影响您,您应该检查直接应用程序日志/错误。另外,Android 2.2 和更高版本的设备不需要 SD 卡来进行 DDMS 跟踪记录。跟踪日志文件直接流式传输到您的开发机器。
关于 Traceview 的其他信息:
将跟踪文件复制到主机
在您的应用程序运行并且系统在设备或模拟器上创建了您的跟踪文件 .trace 之后,您必须将这些文件复制到您的开发计算机。您可以使用 adb pull 来复制文件。下面的示例展示了如何将示例文件 calc.trace 从模拟器上的默认位置复制到模拟器主机上的 /tmp 目录:
adb pull /sdcard/calc.trace /tmp 在 Traceview 中查看跟踪文件 要运行 Traceview 并查看跟踪文件,请输入 traceview 。例如,要对上一节中复制的示例文件运行 Traceview,请使用:
traceview /tmp/calc 注意:如果您尝试查看启用 ProGuard 构建的应用程序的跟踪日志(发布模式构建),某些方法和成员名称可能会被混淆。您可以使用 Proguard mapping.txt 文件找出原始的未混淆名称。有关此文件的更多信息,请参阅 Proguard 文档。
我认为关于oncreate
语句定位或删除的任何其他答案uses-sdk
都不相关,但这是 Android,我可能是错的。将此问题重定向给android工程师或将其作为错误发布会很有用
更多在文档中