接上:Android4.4 CTS测试Fail项修改总结(一)
cts测试环境助手:http://download.csdn.net/detail/deng0zhaotai/8417481
google cts官网:http://source.android.com/compatibility/cts-intro.html
4、android.admin.cts.DeviceAdminActivationTest#testActivateGoodReceiverDisplaysActivationUi FAIL
cts-tf > run cts -c android.admin.cts.DeviceAdminActivationTest -m testActivateGoodReceiverDisplaysActivationUi 12-31 14:36:59 I/TestInvocation: Starting invocation for 'cts' on build '4.4_r3' on device 972c43f8 12-31 14:36:59 I/972c43f8: Created result dir 2014.12.31_14.36.59 12-31 14:37:08 I/972c43f8: Collecting device info 12-31 14:37:10 I/972c43f8: ----------------------------------------- 12-31 14:37:10 I/972c43f8: Test package android.admin started 12-31 14:37:10 I/972c43f8: ----------------------------------------- 12-31 14:37:14 I/972c43f8: android.admin.cts.DeviceAdminActivationTest#testActivateGoodReceiverDisplaysActivationUi FAIL junit.framework.AssertionFailedError at android.admin.cts.DeviceAdminActivationTest.assertDeviceAdminDeactivated(DeviceAdminActivationTest.java:201) at android.admin.cts.DeviceAdminActivationTest.testActivateGoodReceiverDisplaysActivationUi(DeviceAdminActivationTest.java:94) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 12-31 14:37:16 I/972c43f8: Saved log device_logcat_5610258723069879836.zip 12-31 14:37:17 I/972c43f8: Saved log host_log_2335903316004332517.zip 12-31 14:37:17 I/972c43f8: android.admin package complete: Passed 0, Failed 1, Not Executed 0 12-31 14:37:17 I/972c43f8: XML test result file generated at 2014.12.31_14.36.59. Passed 0, Failed 1, Not Executed 0 12-31 14:37:17 I/972c43f8: Time: 0s根据google官网的提示,不要激活Setting->Security->Device administrators中的三项,如下图
重新测试
cts-tf > run cts -c android.admin.cts.DeviceAdminActivationTest -m testActivateGoodReceiverDisplaysActivationUi 12-31 14:37:38 I/TestInvocation: Starting invocation for 'cts' on build '4.4_r3' on device 972c43f8 12-31 14:37:38 I/972c43f8: Created result dir 2014.12.31_14.37.38 12-31 14:37:47 I/972c43f8: Collecting device info 12-31 14:37:49 I/972c43f8: ----------------------------------------- 12-31 14:37:49 I/972c43f8: Test package android.admin started 12-31 14:37:49 I/972c43f8: ----------------------------------------- 12-31 14:37:57 I/972c43f8: android.admin.cts.DeviceAdminActivationTest#testActivateGoodReceiverDisplaysActivationUi PASS 12-31 14:38:00 I/972c43f8: Saved log device_logcat_6341805318950901453.zip 12-31 14:38:00 I/972c43f8: Saved log host_log_1668328307298307564.zip 12-31 14:38:00 I/972c43f8: android.admin package complete: Passed 1, Failed 0, Not Executed 0 12-31 14:38:00 I/972c43f8: XML test result file generated at 2014.12.31_14.37.38. Passed 1, Failed 0, Not Executed 0 12-31 14:38:00 I/972c43f8: Time: 0s
5、android.app.cts.InstrumentationTest#testSendStringSync FAIL
cts-tf > run cts -c android.app.cts.InstrumentationTest -m testSendStringSync 03-26 11:53:03 I/TestInvocation: Starting invocation for 'cts' on build '4.4_r3' on device KZWOLBGURWWO4PNZ 03-26 11:53:03 I/KZWOLBGURWWO4PNZ: Created result dir 2015.03.26_11.53.03 03-26 11:53:14 I/KZWOLBGURWWO4PNZ: Collecting device info 03-26 11:53:16 I/KZWOLBGURWWO4PNZ: ----------------------------------------- 03-26 11:53:16 I/KZWOLBGURWWO4PNZ: Test package android.app started 03-26 11:53:16 I/KZWOLBGURWWO4PNZ: ----------------------------------------- 03-26 11:53:19 I/KZWOLBGURWWO4PNZ: android.app.cts.InstrumentationTest#testSendStringSync FAIL junit.framework.AssertionFailedError: expected:<4> but was:<5> at android.app.cts.InstrumentationTest.testSendStringSync(InstrumentationTest.java:275) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1710) 03-26 11:53:23 I/KZWOLBGURWWO4PNZ: Saved log device_logcat_4048361078057322425.zip 03-26 11:53:23 I/KZWOLBGURWWO4PNZ: Saved log host_log_5671683783190241993.zip 03-26 11:53:23 I/KZWOLBGURWWO4PNZ: android.app package complete: Passed 0, Failed 1, Not Executed 0 03-26 11:53:23 I/KZWOLBGURWWO4PNZ: XML test result file generated at 2015.03.26_11.53.03. Passed 0, Failed 1, Not Executed 0 03-26 11:53:23 I/KZWOLBGURWWO4PNZ: Time: 0s这项Fail是由于默认输入法不是拉丁输入法引起的
修改默认输入法
修改后重新测试
cts-tf > run cts -c android.app.cts.InstrumentationTest -m testSendStringSync 03-26 13:46:05 I/TestInvocation: Starting invocation for 'cts' on build '4.4_r3' on device KZWOLBGURWWO4PNZ 03-26 13:46:05 I/KZWOLBGURWWO4PNZ: Created result dir 2015.03.26_13.46.05 03-26 13:46:17 I/KZWOLBGURWWO4PNZ: Collecting device info 03-26 13:46:18 I/KZWOLBGURWWO4PNZ: ----------------------------------------- 03-26 13:46:18 I/KZWOLBGURWWO4PNZ: Test package android.app started 03-26 13:46:18 I/KZWOLBGURWWO4PNZ: ----------------------------------------- 03-26 13:46:22 I/KZWOLBGURWWO4PNZ: android.app.cts.InstrumentationTest#testSendStringSync PASS 03-26 13:46:25 I/KZWOLBGURWWO4PNZ: Saved log device_logcat_9221753514314264495.zip 03-26 13:46:25 I/KZWOLBGURWWO4PNZ: Saved log host_log_5109570881381647522.zip 03-26 13:46:26 I/KZWOLBGURWWO4PNZ: android.app package complete: Passed 1, Failed 0, Not Executed 0 03-26 13:46:26 I/KZWOLBGURWWO4PNZ: XML test result file generated at 2015.03.26_13.46.05. Passed 1, Failed 0, Not Executed 0 03-26 13:46:26 I/KZWOLBGURWWO4PNZ: Time: 0s
Add 2015.01.29
以下是Android L CTS测试
1、android.display.cts.DisplayTest#testGetDisplayAttrs FAIL
测试结果
cts-tf > run cts -c android.display.cts.DisplayTest -m testGetDisplayAttrs 01-29 16:34:40 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 0123456789ABCDEF 01-29 16:34:40 I/0123456789ABCDEF: Created result dir 2015.01.29_16.34.40 01-29 16:34:40 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 01-29 16:34:45 I/0123456789ABCDEF: Collecting device info 01-29 16:34:46 I/CtsTest: Start test run of 2 packages, containing 2 tests 01-29 16:34:46 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:34:46 I/0123456789ABCDEF: Test package arm64-v8a android.display started 01-29 16:34:46 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:34:49 I/0123456789ABCDEF: android.display.cts.DisplayTest#testGetDisplayAttrs FAIL junit.framework.AssertionFailedError at junit.framework.Assert.fail(Assert.java:48) at junit.framework.Assert.assertTrue(Assert.java:20) at junit.framework.Assert.assertTrue(Assert.java:27) at android.display.cts.DisplayTest.testGetDisplayAttrs(DisplayTest.java:125) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:115) at junit.framework.TestResult.runProtected(TestResult.java:133) at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90) at junit.framework.TestResult.run(TestResult.java:118) at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:52) at junit.framework.TestCase.run(TestCase.java:124) at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103) at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:52) at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at org.junit.runner.JUnitCore.run(JUnitCore.java:136) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:245) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1851) 01-29 16:34:53 I/0123456789ABCDEF: arm64-v8a android.display package complete: Passed 0, Failed 1, Not Executed 0 01-29 16:34:53 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:34:53 I/0123456789ABCDEF: Test package armeabi-v7a android.display started 01-29 16:34:53 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:35:07 E/InstrumentationFileTest: all remaining tests failed to run from file, re-running tests serially 01-29 16:35:08 I/0123456789ABCDEF: android.display.cts.DisplayTest#testGetDisplayAttrs FAIL junit.framework.AssertionFailedError at junit.framework.Assert.fail(Assert.java:48) at junit.framework.Assert.assertTrue(Assert.java:20) at junit.framework.Assert.assertTrue(Assert.java:27) at android.display.cts.DisplayTest.testGetDisplayAttrs(DisplayTest.java:125) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:115) at junit.framework.TestResult.runProtected(TestResult.java:133) at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90) at junit.framework.TestResult.run(TestResult.java:118) at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:52) at junit.framework.TestCase.run(TestCase.java:124) at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103) at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:52) at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at org.junit.runner.JUnitCore.run(JUnitCore.java:136) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:245) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1851) 01-29 16:35:11 I/0123456789ABCDEF: Saved log device_logcat_7550519396716798686.zip 01-29 16:35:12 I/0123456789ABCDEF: Saved log host_log_8662820341921817779.zip 01-29 16:35:12 I/0123456789ABCDEF: armeabi-v7a android.display package complete: Passed 0, Failed 1, Not Executed 0 01-29 16:35:12 I/0123456789ABCDEF: Created xml report file at file:///home/dzt/D/dzt/cts/5.0/android-cts-5.0_r1-linux_x86-arm/android-cts/tools/./../../android-cts/repository/results/2015.01.29_16.34.40/testResult.xml 01-29 16:35:12 I/0123456789ABCDEF: XML test result file generated at 2015.01.29_16.34.40. Passed 0, Failed 2, Not Executed 0 01-29 16:35:12 I/0123456789ABCDEF: Time: 31s
需要把语言设置成English重新测试
cts-tf > run cts -c android.display.cts.DisplayTest -m testGetDisplayAttrs 01-29 16:38:05 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 0123456789ABCDEF 01-29 16:38:05 I/0123456789ABCDEF: Created result dir 2015.01.29_16.38.05 01-29 16:38:05 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 01-29 16:38:10 I/0123456789ABCDEF: Collecting device info 01-29 16:38:11 I/CtsTest: Start test run of 2 packages, containing 2 tests 01-29 16:38:11 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:38:11 I/0123456789ABCDEF: Test package arm64-v8a android.display started 01-29 16:38:11 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:38:14 I/0123456789ABCDEF: android.display.cts.DisplayTest#testGetDisplayAttrs PASS 01-29 16:38:18 I/0123456789ABCDEF: arm64-v8a android.display package complete: Passed 1, Failed 0, Not Executed 0 01-29 16:38:18 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:38:18 I/0123456789ABCDEF: Test package armeabi-v7a android.display started 01-29 16:38:18 I/0123456789ABCDEF: ----------------------------------------- 01-29 16:38:21 I/0123456789ABCDEF: android.display.cts.DisplayTest#testGetDisplayAttrs PASS 01-29 16:38:25 I/0123456789ABCDEF: Saved log device_logcat_8808848150648018685.zip 01-29 16:38:25 I/0123456789ABCDEF: Saved log host_log_596117326603945188.zip 01-29 16:38:25 I/0123456789ABCDEF: armeabi-v7a android.display package complete: Passed 1, Failed 0, Not Executed 0 01-29 16:38:25 I/0123456789ABCDEF: Created xml report file at file:///home/dzt/D/dzt/cts/5.0/android-cts-5.0_r1-linux_x86-arm/android-cts/tools/./../../android-cts/repository/results/2015.01.29_16.38.05/testResult.xml 01-29 16:38:25 I/0123456789ABCDEF: XML test result file generated at 2015.01.29_16.38.05. Passed 2, Failed 0, Not Executed 0 01-29 16:38:25 I/0123456789ABCDEF: Time: 20s
2、run cts --class android.nativemedia.sl.SLObjectCreationTest
测试结果
cts-tf > run cts --class android.nativemedia.sl.SLObjectCreationTest 02-07 15:24:32 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 65IVR84LOBLBEAUC 02-07 15:24:32 I/65IVR84LOBLBEAUC: Created result dir 2015.02.07_15.24.32 02-07 15:24:32 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 02-07 15:24:44 I/65IVR84LOBLBEAUC: Collecting device info 02-07 15:24:46 I/CtsTest: Start test run of 2 packages, containing 20 tests 02-07 15:24:46 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 15:24:46 I/65IVR84LOBLBEAUC: Test package arm64-v8a android.nativemedia.sl started 02-07 15:24:46 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testEngineCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testOutputMixCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromPcmBqCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromTsAbqCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriToPcmBqCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdToPcmBqCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromAdtsAbqToPcmBqCreation PASS 02-07 15:24:46 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioRecorderCreation PASS 02-07 15:24:48 I/65IVR84LOBLBEAUC: arm64-v8a android.nativemedia.sl package complete: Passed 10, Failed 0, Not Executed 0 02-07 15:24:48 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 15:24:48 I/65IVR84LOBLBEAUC: Test package armeabi-v7a android.nativemedia.sl started 02-07 15:24:48 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testEngineCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testOutputMixCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromPcmBqCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromTsAbqCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriToPcmBqCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdToPcmBqCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromAdtsAbqToPcmBqCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:48 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioRecorderCreation FAIL IsOk failure: unknown (0xab54063c), exiting cts/tests/tests/nativemedia/sl/src/SLObjectCreationTest.cpp:94: Failure Value of: IsOk(res) Actual: false Expected: true 02-07 15:24:49 I/65IVR84LOBLBEAUC: Saved log device_logcat_756178635134119899.zip 02-07 15:24:49 I/65IVR84LOBLBEAUC: Saved log host_log_1250408897433779978.zip 02-07 15:24:49 I/65IVR84LOBLBEAUC: armeabi-v7a android.nativemedia.sl package complete: Passed 0, Failed 10, Not Executed 0 02-07 15:24:50 I/65IVR84LOBLBEAUC: XML test result file generated at 2015.02.07_15.24.32. Passed 10, Failed 10, Not Executed 0 02-07 15:24:50 I/65IVR84LOBLBEAUC: Time: 17s64位的可以Pass,但32位都Fail
分析思路:
android.nativemedia.sl.SLObjectCreationTest这个类主要测试的文件存放在:frameworks/wilhelm/src/,在这个目录中,查看其中的Android.mk文件可以看到会生成三个库
libwilhelm.so
libOpenSLES.so
libOpenMAXAL.so
由于64位没问题,所以问题肯定是出在32位的库上,无意中被我发现libOpenSLES.so库在整个系统new出来的和单个模块编译出来的libOpenSLES.so库大小不一致。(是由于在src/entry.c添加log调试,把生成的库push到手机居然Pass,就猜想是由于整个系统编译出来和单个模块编译出来库不一致造成的,后来验证果然是由于libOpenSLES.so库引起的),知道了是由libOpenSLES.so库引起的,可以在android根目录去搜索libOpenSLES.so,看有哪些地方有这个库,通过查找
dzt@dzt-All-Series:~/D/dzt/workarea/7501_l_mp_bak/gionee_packages_apk_amigo_3.0$ find -name libOpenSLES.so ./packages/common/packages/apps/Amigo_Browser/libOpenSLES.so真的有apk使用了这个库查看Amigo_Browser目录下的Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE := Amigo_Browser LOCAL_SRC_FILES := $(LOCAL_MODULE).apk LOCAL_MODULE_CLASS := APPS LOCAL_CERTIFICATE := PRESIGNED LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_MULTILIB := 32 LOCAL_PREBUILT_JNI_LIBS += @lib/armeabi-v7a/libOpenSLES.so LOCAL_PREBUILT_JNI_LIBS += @lib/armeabi-v7a/libUGo.so LOCAL_PREBUILT_JNI_LIBS += @lib/armeabi-v7a/libVoGo.so PRODUCT_COPY_FILES += $(foreach pathfile, $(shell find $(LOCAL_PATH) -name "*.so"), $(pathfile):system/lib/$(notdir $(pathfile))) #skip PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/libOpenSLES.so:system/lib/libOpenSLES.so \ $(LOCAL_PATH)/libUGo.so:system/lib/libUGo.so \ $(LOCAL_PATH)/libVoGo.so:system/lib/libVoGo.so include $(BUILD_PREBUILT)根据
$(LOCAL_PATH)/libOpenSLES.so:system/lib/libOpenSLES.so \
$(LOCAL_PATH)/libUGo.so:system/lib/libUGo.so \
$(LOCAL_PATH)/libVoGo.so:system/lib/libVoGo.so
复制到system/lib目录下,就是32位的,也可以从BUILDING_LOG分析android.log可以看到以下信息
build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_00.png”的命令 vendor/mediatek/proprietary/factory/Android.mk:570: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_00.png”的旧命令 build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_01.png”的命令 vendor/mediatek/proprietary/factory/Android.mk:570: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_01.png”的旧命令 build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_02.png”的命令 vendor/mediatek/proprietary/factory/Android.mk:570: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/res/images/lcd_test_02.png”的旧命令 build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/lib/libOpenSLES.so”的命令 build/core/base_rules.mk:550: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/lib/libOpenSLES.so”的旧命令 build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/lib/liba3m.so”的命令 build/core/base_rules.mk:550: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/lib/liba3m.so”的旧命令 build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/lib/libja3m.so”的命令 build/core/base_rules.mk:550: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/lib/libja3m.so”的旧命令 PRODUCT_COPY_FILES packages/apps/Amigo_Contacts/liblocSDK4.so:system/lib/liblocSDK4.so ignored. PRODUCT_COPY_FILES packages/apps/Amigo_GameHall/lib_gn_appincupgrade.so:system/lib/lib_gn_appincupgrade.so ignored. PRODUCT_COPY_FILES packages/apps/Amigo_Mms/liblocSDK4.so:system/lib/liblocSDK4.so ignored. PRODUCT_COPY_FILES packages/apps/Amigo_Mms/libsmartdialer_oem_module.so:system/lib/libsmartdialer_oem_module.so ignored. PRODUCT_COPY_FILES packages/apps/Amigo_Mms/libstlport_shared.so:system/lib/libstlport_shared.so ignored. PRODUCT_COPY_FILES packages/apps/Amigo_Music/lib_gn_appincupgrade.so:system/lib/lib_gn_appincupgrade.so ignored.其中重要信息是
build/core/Makefile:41: 警告:覆盖关于目标“out/target/product/gionee6752_lwt_l/system/lib/libOpenSLES.so”的命令
build/core/base_rules.mk:550: 警告:忽略关于目标“out/target/product/gionee6752_lwt_l/system/lib/libOpenSLES.so”的旧命令
说明libOpenSLES.so没有编译成功
把模块frameworks/wilhelm/src/重新编译导入libOpenSLES.so后再重新测试
cts-tf > run cts --class android.nativemedia.sl.SLObjectCreationTest 02-07 16:19:10 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 65IVR84LOBLBEAUC 02-07 16:19:10 I/65IVR84LOBLBEAUC: Created result dir 2015.02.07_16.19.10 02-07 16:19:10 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 02-07 16:19:21 I/65IVR84LOBLBEAUC: Collecting device info 02-07 16:19:23 I/CtsTest: Start test run of 2 packages, containing 20 tests 02-07 16:19:23 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 16:19:23 I/65IVR84LOBLBEAUC: Test package arm64-v8a android.nativemedia.sl started 02-07 16:19:23 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testEngineCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testOutputMixCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromPcmBqCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromTsAbqCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriToPcmBqCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdToPcmBqCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromAdtsAbqToPcmBqCreation PASS 02-07 16:19:23 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioRecorderCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: arm64-v8a android.nativemedia.sl package complete: Passed 10, Failed 0, Not Executed 0 02-07 16:19:25 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 16:19:25 I/65IVR84LOBLBEAUC: Test package armeabi-v7a android.nativemedia.sl started 02-07 16:19:25 I/65IVR84LOBLBEAUC: ----------------------------------------- 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testEngineCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testOutputMixCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromPcmBqCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromTsAbqCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromUriToPcmBqCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromFdToPcmBqCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioPlayerFromAdtsAbqToPcmBqCreation PASS 02-07 16:19:25 I/65IVR84LOBLBEAUC: android.nativemedia.sl.SLObjectCreationTest#testAudioRecorderCreation PASS 02-07 16:19:26 I/65IVR84LOBLBEAUC: Saved log device_logcat_5006165446450761353.zip 02-07 16:19:26 I/65IVR84LOBLBEAUC: Saved log host_log_6103563281002460314.zip 02-07 16:19:26 I/65IVR84LOBLBEAUC: armeabi-v7a android.nativemedia.sl package complete: Passed 10, Failed 0, Not Executed 0 02-07 16:19:26 I/65IVR84LOBLBEAUC: XML test result file generated at 2015.02.07_16.19.10. Passed 20, Failed 0, Not Executed 0 02-07 16:19:26 I/65IVR84LOBLBEAUC: Time: 16s
找到根本原因后问题就好解了,正常情况下apk是不需要集成系统的so库,因为系统会把这些库安装到system/lib和system/lib64的
3、android.permission2.cts.NoCaptureAudioOutputPermissionTest#testCreateAudioRecord FAIL
测试结果
cts-tf > run cts -c android.permission2.cts.NoCaptureAudioOutputPermissionTest -m testCreateAudioRecord 03-23 13:59:27 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 0123456789ABCDEF 03-23 13:59:27 I/0123456789ABCDEF: Created result dir 2015.03.23_13.59.27 03-23 13:59:27 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 03-23 13:59:44 I/0123456789ABCDEF: Collecting device info 03-23 13:59:46 I/CtsTest: Start test run of 2 packages, containing 2 tests 03-23 13:59:46 I/0123456789ABCDEF: ----------------------------------------- 03-23 13:59:46 I/0123456789ABCDEF: Test package arm64-v8a android.permission2 started 03-23 13:59:46 I/0123456789ABCDEF: ----------------------------------------- 03-23 13:59:51 I/0123456789ABCDEF: android.permission2.cts.NoCaptureAudioOutputPermissionTest#testCreateAudioRecord FAIL junit.framework.AssertionFailedError: AudioRecord state should not be INITIALIZED because the applicationdoes not have permission to access the remote submix source at junit.framework.Assert.fail(Assert.java:50) at junit.framework.Assert.assertTrue(Assert.java:20) at android.permission2.cts.NoCaptureAudioOutputPermissionTest.testCreateAudioRecord(NoCaptureAudioOutputPermissionTest.java:50) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:115) at junit.framework.TestResult.runProtected(TestResult.java:133) at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90) at junit.framework.TestResult.run(TestResult.java:118) at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:52) at junit.framework.TestCase.run(TestCase.java:124) at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103) at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:52) at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at org.junit.runner.JUnitCore.run(JUnitCore.java:136) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:245) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1851) 03-23 13:59:55 I/0123456789ABCDEF: arm64-v8a android.permission2 package complete: Passed 0, Failed 1, Not Executed 0 03-23 13:59:55 I/0123456789ABCDEF: ----------------------------------------- 03-23 13:59:55 I/0123456789ABCDEF: Test package armeabi-v7a android.permission2 started 03-23 13:59:55 I/0123456789ABCDEF: ----------------------------------------- 03-23 14:00:00 I/0123456789ABCDEF: android.permission2.cts.NoCaptureAudioOutputPermissionTest#testCreateAudioRecord FAIL junit.framework.AssertionFailedError: AudioRecord state should not be INITIALIZED because the applicationdoes not have permission to access the remote submix source at junit.framework.Assert.fail(Assert.java:50) at junit.framework.Assert.assertTrue(Assert.java:20) at android.permission2.cts.NoCaptureAudioOutputPermissionTest.testCreateAudioRecord(NoCaptureAudioOutputPermissionTest.java:50) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:115) at junit.framework.TestResult.runProtected(TestResult.java:133) at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90) at junit.framework.TestResult.run(TestResult.java:118) at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:52) at junit.framework.TestCase.run(TestCase.java:124) at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63) at junit.framework.TestSuite.runTest(TestSuite.java:243) at junit.framework.TestSuite.run(TestSuite.java:238) at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103) at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:52) at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:24) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at org.junit.runner.JUnitCore.run(JUnitCore.java:136) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:245) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1851) 03-23 14:00:03 I/0123456789ABCDEF: Saved log device_logcat_4057457500554080901.zip 03-23 14:00:03 I/0123456789ABCDEF: Saved log host_log_4722947613063857273.zip 03-23 14:00:03 I/0123456789ABCDEF: armeabi-v7a android.permission2 package complete: Passed 0, Failed 1, Not Executed 0 03-23 14:00:03 I/0123456789ABCDEF: XML test result file generated at 2015.03.23_13.59.27. Passed 0, Failed 2, Not Executed 0 03-23 14:00:03 I/0123456789ABCDEF: Time: 36s在文件/frameworks/av/services/audioflinger/AudioFlinger.cpp可以找到这样的代码
#if 0 if (deviceRequiresCaptureAudioOutputPermission(thread->inDevice()) && !captureAudioOutputAllowed()) { ALOGE("openRecord() permission denied: capture not allowed"); lStatus = PERMISSION_DENIED; goto Exit; } #endif其中
static bool deviceRequiresCaptureAudioOutputPermission(audio_devices_t inDevice) { return audio_is_remote_submix_device(inDevice); }
bool captureAudioOutputAllowed() { if (getpid_cached == IPCThreadState::self()->getCallingPid()) return true; static const String16 sCaptureAudioOutput("android.permission.CAPTURE_AUDIO_OUTPUT"); // don't use PermissionCache; this is not a system permission bool ok = checkCallingPermission(sCaptureAudioOutput); if (!ok) ALOGE("Request requires android.permission.CAPTURE_AUDIO_OUTPUT"); return ok; }由于测试用例是判断record.getState() != AudioRecord.STATE_INITIALIZED
/** * Verify the capture system video output permission requirements. */ public class NoCaptureAudioOutputPermissionTest extends AndroidTestCase { /** * Verify that the AudioRecord constructor fails to create a recording object * when the app does not have permission to capture audio output. * For the purposes of this test, the app must already have the normal audio * record permission, just not the capture audio output permission. * <p>Requires permission: * {@link android.Manifest.permission#RECORD_AUDIO} and * {@link android.Manifest.permission#CAPTURE_VIDEO_OUTPUT}. */ @SmallTest public void testCreateAudioRecord() { final int bufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT); // The attempt to create the AudioRecord object succeeds even if the // app does not have permission, but the object is not usable. // The API should probably throw SecurityException but it was not originally // designed to do that and it's not clear we can change it now. AudioRecord record = new AudioRecord(AudioSource.REMOTE_SUBMIX, 44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); try { assertTrue("AudioRecord state should not be INITIALIZED because the application" + "does not have permission to access the remote submix source", record.getState() != AudioRecord.STATE_INITIALIZED); } finally { record.release(); } } }说明需要加上权限:android.permission.CAPTURE_AUDIO_OUTPUT判断,修改为:
if (deviceRequiresCaptureAudioOutputPermission(thread->inDevice()) && !captureAudioOutputAllowed()) { ALOGE("openRecord() permission denied: capture not allowed"); lStatus = PERMISSION_DENIED; goto Exit; }重新测试
cts-tf > run cts -c android.permission2.cts.NoCaptureAudioOutputPermissionTest -m testCreateAudioRecord 03-23 19:32:45 I/TestInvocation: Starting invocation for 'cts' on build '5.0_r1' on device 0123456789ABCDEF 03-23 19:32:45 I/0123456789ABCDEF: Created result dir 2015.03.23_19.32.45 03-23 19:32:45 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a] 03-23 19:32:56 I/0123456789ABCDEF: Collecting device info 03-23 19:32:58 I/CtsTest: Start test run of 2 packages, containing 2 tests 03-23 19:32:58 I/0123456789ABCDEF: ----------------------------------------- 03-23 19:32:58 I/0123456789ABCDEF: Test package arm64-v8a android.permission2 started 03-23 19:32:58 I/0123456789ABCDEF: ----------------------------------------- 03-23 19:33:03 I/0123456789ABCDEF: android.permission2.cts.NoCaptureAudioOutputPermissionTest#testCreateAudioRecord PASS 03-23 19:33:07 I/0123456789ABCDEF: arm64-v8a android.permission2 package complete: Passed 1, Failed 0, Not Executed 0 03-23 19:33:07 I/0123456789ABCDEF: ----------------------------------------- 03-23 19:33:07 I/0123456789ABCDEF: Test package armeabi-v7a android.permission2 started 03-23 19:33:07 I/0123456789ABCDEF: ----------------------------------------- 03-23 19:33:11 I/0123456789ABCDEF: android.permission2.cts.NoCaptureAudioOutputPermissionTest#testCreateAudioRecord PASS 03-23 19:33:14 I/0123456789ABCDEF: Saved log device_logcat_6206256854887766681.zip 03-23 19:33:15 I/0123456789ABCDEF: Saved log host_log_766403234660958453.zip 03-23 19:33:15 I/0123456789ABCDEF: armeabi-v7a android.permission2 package complete: Passed 1, Failed 0, Not Executed 0 03-23 19:33:15 I/0123456789ABCDEF: Created xml report file at file:///home/dzt/dzt/cts/5.0/android-cts-5.0_r1-linux_x86-arm/android-cts/tools/./../../android-cts/repository/results/2015.03.23_19.32.45/testResult.xml 03-23 19:33:15 I/0123456789ABCDEF: XML test result file generated at 2015.03.23_19.32.45. Passed 2, Failed 0, Not Executed 0 03-23 19:33:15 I/0123456789ABCDEF: Time: 30s