這兩天跑Android 4.0 自帶的testCase,在短信模塊,總遇到下面這個問題:
Remounting read-only filesystem
Waiting for device package manager...
Waiting for instrumentation to be present
Could not find instrumentation com.android.mms.tests/android.test.InstrumentationTestRunner on device. Does the instrumentation in test's AndroidManifest.xml match definitionin test_defs.xml?
Timed out waiting for response
--- 然後就退出來了,看到這個問題,很是鬱悶,反覆檢查 test's AndroidManifest.xml 和 test_defs.xml 這兩個文件中的mms的配置,沒發現什麼問題(還對照了其他可以跑起來的app的相關配置對比過。)
在同事的幫忙下,adb shell下用如下命令查看 instrumenation :
# pm list instrumentation
除了其他app的instrumentation外,還真沒有關於mms的instrumentation,就鬱悶了,怎麼會沒有 instrumentation 呢?
網上查閱一番,這個是需要安裝對應的app的(即含有testcase的app),怎麼會沒有呢?怎麼會沒有呢????
查看啓動測試時,系統自動build完app後,有這樣一行log:
Install: out/target/product/generic/data/app/MmsTests.apk
(下面還有這樣一行:Install: out/target/product/generic/system/app/MmsAppTests.apk ,MmsAppTest.apk 手動安裝的過程中,不能成功安裝的提示語和按裝 MmsTests.apk,也就算說,他們應該是一個,想不明白,這裏爲什麼是這個命名,因爲 Android.mk 中,配置的 LOCAL_PACKAGE_NAME := MmsTests ,如果有知道的朋友,請在評論中答覆一下,不勝感激。)
好吧,回來說發現上述log之後的操作步驟(反覆試驗失敗的不說,這裏撿重要的說)
到 MmsTests.apk 所在目錄文件夾下,用 adb install MmsTests.apk 安裝,總是出現如下錯誤提示:
196 KB/s (12046 bytes in 0.059s)
pkg: /data/local/tmp/MmsTests.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
既然MmsTests.apk已經存在,怎麼又沒有instrumenation呢?於是到設備上查看app,居然沒有找到 MmsTests.apk ,在設備上 /data/local/tmp/ 目錄下也未找到,提示中的MmsTests.apk 。設備上沒有,又不讓我安裝,怎麼回事?(這裏我也未找到原因,知道的朋友請答覆一下,謝謝!) 中間還嘗試過卸載 MmsTests.apk,不過沒成功。
在網上搜索了一番,也有人遇到同樣的問題,有人給出解答:
Include the -r flag to indicate it's a re-install. Ex: "adb install -r
TEST_V2.apk"
TIp: type "adb" with no argument in the command line to see a list of
available commands and flags.
(地址:http://groups.google.com/group/android-developers/browse_thread/thread/2d27c8829d4c75cf)
於是, adb install -r MmsTests.apk ,問題解決!
最後的解決方案其實也不復雜,但這個過程一步步下來,感覺不容易,中間遇到了不少問題,不過“一步一步進行定位”這種方式還是不錯的。(其實,前天不知道怎麼弄的,是可以跑的起來的,今天重新build了一遍,就不行了,現在找到了解決問題的基本方法,下次不怕了。)