安卓 - Eclipse:跟踪文件

3

我有两个问题——但是先说重点:
戴尔Inspiron M5030:AMD Athlon II P360
Windows 7 Ultimate 32位SP 1
Android ADT 21.0.1-543035
org.eclipse.platform.ide 3.8.0-I20120608-1200
模拟器:
4.0“ WVGA(480x800:hdpi)
Android 4.2(API 17)
armeabi-v7a
RAM:512,VM Heap:16
内部存储:600MB
SD卡大小128MB,使用主机GPU

在我的活动的onCreate中,我有以下这些行:

super.onCreate(savedInstanceState);
if (BuildConfig.DEBUG) {
        Log.i(Constants.TAG_ACTSPLASH, "onCreate() Method called.");
        Debug.startMethodTracing("actsplash");
}

在我的活动的onDestroy方法中,我有以下几行代码:
super.onDestroy();
    if (BuildConfig.DEBUG) {
            Log.i(Constants.TAG_ACTSPLASH, "onDestroy()");
            Debug.stopMethodTracing();
    }

问题一:在调试模式下,调用onCreate后,Logcat会显示以下信息:

davlikvm: Unable to open trace file '/mnt/sdcard/actsplash.trace': Permission denied

注意:在我的Epic4G(Android 4.2)上运行apk时,会创建跟踪文件。

问题二:从Epic4G提取的跟踪文件无法处理。 (1)运行traceview时出现错误:

The standalone version of traceview is deprecated. Please use Android Device Monitor (tools/monitor) instead. trace file './actsplash.trace' not found

(2)当运行ADM('%SDK%/tools/monitor.bat')并加载跟踪文件时,我会收到以下提示:

Failed to read the stack trace.

这篇文章提到了密钥文件...这是缺失的东西吗?我们将很感激您的任何帮助!
3个回答

2
第一个问题可以通过为您的应用程序添加WRITE_EXTERNAL_STORAGE权限来解决,以便它可以写入/sdcard。或者,明确指定跟踪文件的文件名存储在您的私有应用程序数据存储区中,并从那里提取文件。
第二个问题是“未找到跟踪文件”,这是第一个问题的直接结果。第三个问题似乎是第二个问题的变体。
跟踪文件本身曾经被分成“键”和“数据”文件,但是很久以前就将它们合并为单个.trace文件了。

1
感谢您抽出时间回复。AndroidManifest.xml: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 关于使用私有应用程序数据存储区域,您是说我可以这样做:“Debug.startMethodTracing("/data/data/<app-path>/actsplash.trace");”吗? 我还要重申的是,当我运行程序时,跟踪文件确实出现在我的手机上,但是traceview和ADM都无法处理它。 - Quasaur
有没有办法可以将我的手机跟踪文件包含进来? - Quasaur
权限看起来没问题——这应该可以消除“权限被拒绝”的错误。对于应用程序数据区域,请使用Context.getFilesDir()而不是硬编码路径,但你的想法是正确的。如果你用文本编辑器查看跟踪文件,你应该会看到它以*version开头,然后是一些配置信息,接着是一个方法列表,紧随其后的是二进制数据。有时当事情失败时,你会得到一个零长度的文件,并且并不是所有的东西都能很好地告诉你,所以请检查文件内容。 - fadden

0

问题似乎出在4.2模拟器上;4.1模拟器处理了跟踪文件并(与4.2模拟器不同)允许我拉取该文件并在ADM(Android Debug Monitor)中加载它。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接