Android在设备上运行但在模拟器上崩溃

时间:2014-01-27 21:34:33

标签: android ant robotium android-testing

我正在为Android设置自动测试。 如果我跑

  

ant仪器安装测试

并将我的物理设备连接起来,它就像一个魅力:

[echo] Running tests ...
 [exec] 
 [exec] com.abc.test.MainActivityUnitTest:.
 [exec] Test results for InstrumentationTestRunner=.
 [exec] Time: 3.362
 [exec] 
 [exec] OK (1 test)
 [exec] 
 [exec] 

如果我在仿真设备上部署它,我会得到以下结果:

[echo] Running tests ...
 [exec] INSTRUMENTATION_STATUS: id=ActivityManagerService
 [exec] INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.abc.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.abc.test does not have a signature matching the target com.abc
 [exec] INSTRUMENTATION_STATUS_CODE: -1
 [exec] java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.abc.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.abc.test does not have a signature matching the target com.abc
 [exec]     at android.os.Parcel.readException(Parcel.java:1465)
 [exec]     at android.os.Parcel.readException(Parcel.java:1419)
 [exec]     at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3188)
 [exec]     at com.android.commands.am.Am.runInstrument(Am.java:864)
 [exec]     at com.android.commands.am.Am.onRun(Am.java:282)
 [exec]     at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
 [exec]     at com.android.commands.am.Am.main(Am.java:76)
 [exec]     at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
 [exec]     at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
 [exec]     at dalvik.system.NativeStart.main(Native Method)

我正在使用ant构建和Robotium进行测试。 有人有想法吗?

编辑: 我读到签署以前安装的应用程序版本可能存在某种问题。所以我擦除了模拟器并再次部署。这次我得到了:

[echo] Running tests ...
 [exec] 
 [exec] com.abc.MainActivityUnitTest:INSTRUMENTATION_RESULT: shortMsg=Native crash
 [exec] INSTRUMENTATION_RESULT: longMsg=Native crash: Segmentation fault
 [exec] INSTRUMENTATION_CODE: 0

由于anthonymasson建议我检查我的设备配置,SD-Memory设置为0。 现在我得到了以下内容:

[echo] Running tests ...
 [exec] 
 [exec] com.abc.test.MainActivityUnitTest:INSTRUMENTATION_RESULT: shortMsg=Process crashed.
 [exec] INSTRUMENTATION_CODE: 0

如果我在ADT中运行测试,它实际上是绿色的。但是在logcat中有以下例外:

  

java.io.FileNotFoundException:/ sys / devices / system / cpu / cpu0 / cpufreq / cpuinfo_max_freq:open failed:ENOENT(没有这样的文件或目录)

知道这意味着什么吗?谷歌不是很有帮助......

3 个答案:

答案 0 :(得分:1)

检查您的RAM / SD分频率。 通常是VM的配置。 您的程序尝试访问不存在的内容。

答案 1 :(得分:1)

 [exec] INSTRUMENTATION_STATUS: Error=Permission Denial: starting instrumentation ComponentInfo{com.graphmasters.nunav.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.graphmasters.nunav.test does not have a signature matching the target com.graphmasters.nunav
 [exec] INSTRUMENTATION_STATUS_CODE: -1
 [exec] java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{com.graphmasters.nunav.test/android.test.InstrumentationTestRunner} from pid=1134, uid=1134 not allowed because package com.graphmasters.nunav.test does not have a signature matching the target com.graphmasters.nunav

检查 com.abc com.abc.test 这两个签名

答案 2 :(得分:1)

到目前为止,答案中几乎描述了我的完整旅程。

但是我棺材里的最后一颗钉子是: 测试是绿色的,因为它们在错误发生之前运行。 该错误与我的应用程序试图读取模拟器上没有的硬件信息有关。

有人建议试用Genymotion。 我还没有调查过,但如果有人遇到同样的问题,他可能会对此感到满意。

我会在有更多输入后立即更新。