CTS笔记

博客提及apex签名文件情况,部分文件原本只有2个,生成后替换2个;部分有4个,生成后替换4个。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

apex签名有的文件里面原本只有2个文件,生成后替换2个就可以,有的是4个文件 ,生成后替换4个文件

​
(一)android.appsecurity.cts.ApexSignatureVerificationTest#testApexPubKeyIsNotWellKnownKey

java.lang.AssertionError: must not use well known pubkey Expected: must not match well known key but: was </tmp/ApexSignatureVerificationTest15659635191785539726/tests-apex_com.android.adbd3670417821235385213/apex_pubkey>

原因:此项fail意思是com.android.adbd的apex使用的是google的签名,而不是项目的签名

解决方法:请替换成贵司的签名文件。可以参考packages/modules/vndk/apex/README.md
每个apex使用不同的签名文件,所以需要为报错的每个apex生成对应的签名文件。
 
建议签名文件的前缀和apex的包名保持一致, 然后将生成的签名文件放入贵司指定的存放签名文件的文件夹中。
 
如何生成 apex 镜像签名文件:注意是在ap目录下,非sys目录
cd alps/external/avb
1.   openssl genrsa -out com.android.adbd.pem 4096
2.   ./avbtool extract_public_key --key com.android.adbd.pem --output com.android.adbd.avbpubkey
3. openssl req -x509 -newkey rsa:4096 -nodes -days 999999 -keyout key.pem -out com.android.adbd.x509.pem
下面需要输入公司的信息
Country Name:CN
State:Guangdong
Locality Name:Shenzhen
Organization Name:Wingtech
Organization Unit Name:Wingtech Mobile Communications Co. Ltd. 
Common Name: S88523AA1-->不同的项目需要修改成不一样
Email address:scm@wingtech.com
4.openssl pkcs8 -topk8 -inform PEM -outform DER -in key.pem -out com.android.adbd.pk8 -nocrpt

5.生成之后,在alps find -name com.android.adbd.avbpubkey,
把当前目录(alps/external/avb)自己生成的com.android.adbd.avbpubkey
和com.android.adbd.pem文件替换掉find路径下
(packages/modules/adb/apex)的com.android.adbd.avbpubkey和com.android.adbd.pem文件
6.删除所有alps/external/avb下生成的新文件,特别是需要 rm key.pem

(二)GtsBootHealthHostTestCases

android.boothealth.gts.BootHealthHostTest#testUpdatableProcessCrashNotDetected

Upadatable process crash detected: vendor.dataqti expected to be false at android.boothealth.gts.BootHealthHostTest.testUpdatableProcessCrashNotDetected(BootHealthHostTest.java:75)

 此问题是通讯模块负责,功能未删除干净

在init.class_main.sh里面删除二个 start vendor.dataqti 后pass



(三)GtsPermissionTestCases

com.google.android.permission.gts.DefaultPermissionGrantPolicyTest#testDefaultGrantsWithRemoteExceptions	
l

java.lang.AssertionError: packageName: com.amazon.mShop.android.shopping { priv app: false targetSDK: 30 uid: 10159 persistent: false signature: 2F19ADEB284EB36F7F07786152B9A1D14B21653203AD0B04EBBF9C73AB6D7625 on system image: true has platform signature: false message: cannot be granted by default to package { permission: android.permission.BLUETOOTH_CONNECT permission: android.permission.BLUETOOTH_ADVERTISE permission: android.permission.ACTIVITY_RECOGNITION permission: android.permission.BLUETOOTH_SCAN } }

com.amazon.mShop.android.shopping包不能默认授予以下权限,沟通三方去掉或者申请豁免

(四)GtsGmscoreHostTestCases

com.google.android.gts.security.AttestationRootHostTest#testEcAttestationChain

fail

junit.framework.AssertionFailedError: com.google.android.gts.security.AttestationRootTest.testEcAttestationChain failed.

com.google.android.gts.security.AttestationRootHostTest#testRsaAttestationChain	
fail

junit.framework.AssertionFailedError: com.google.android.gts.security.AttestationRootTest.testRsaAttestationChain failed.

需要写入attestation key测试

(五)GtsFeaturesTestCases--com.google.android.features.gts.GoogleFeaturesTest#testFeatureAiai 

[SOLUTION]
 
T版本才强制要求预置 ,S版不需要.
请在GMS包里删掉ASI,修改方法如下:
 
products/gms.mk
 
     GMS_PRODUCT_PACKAGES += \
--      AndroidSystemIntelligence_Features \
        CalendarGoogle \
        TagGoogle \
        talkback \
        LatinImeGoogle
 
etc/sysconfig/google.xml
 
      <!-- ASI integration. To enable Playstore update -->
      <!-- Use this if ASI Features APK is preloaded (and do NOT use com.google.android.feature.ASI_MINIMAL) -->
--    <feature name="com.google.android.feature.ASI" />
六com.google.android.gts.devicepolicy.managedprovisioning.DeviceOwnerProvisioningHostsideTest#testRequiredAppsInManagedUser fail

08-22 16:11:39.143 1910297 18269 18285 E TestRunner: failed: testRequiredApps_ManagedUser(com.google.android.gts.managedprovisioning.AfwRequiredAppsTest)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: ----- begin exception -----
08-22 16:11:39.144 1910089 13562 13985 W ProxyAndroidLoggerBackend: Too many Flogger logs received before configuration. Dropping old logs.
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: java.lang.AssertionError: Should have at least one packages to handle Intent { act=android.intent.action.DIAL }, found []
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: Expected: a value greater than <0>
08-22 16:11:39.144 1910297 18269 18285 E TestRunner:      but: <0> was equal to <0>
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at com.google.android.gts.managedprovisioning.AfwRequiredAppsTest.assertAndGetPackagesHandleIntent(AfwRequiredAppsTest.java:511)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at com.google.android.gts.managedprovisioning.AfwRequiredAppsTest.assertRequiredAppsInDeviceOwnerOrManagedUser(AfwRequiredAppsTest.java:554)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at com.google.android.gts.managedprovisioning.AfwRequiredAppsTest.testRequiredApps_ManagedUser(AfwRequiredAppsTest.java:206)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at java.lang.reflect.Method.invoke(Native Method)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:61)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:148)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:142)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: 	at java.lang.Thread.run(Thread.java:920)
08-22 16:11:39.144 1910297 18269 18285 E TestRunner: ----- end exception -----
[SOLUTION]

请确保有预制Google Mainline Module中的Google DocumentsUI,

然后在如下文件中加上Google DocumentsUI的包名(com.google.android.documentsui).

base/core/res/res/values/required_apps_managed_device.xml

base/core/res/res/values/required_apps_managed_profile.xml

base/core/res/res/values/required_apps_managed_user.xml

七(CtsOsTestCases fail*7)

run cts -m CtsOsTestCases 
【预期结果】PASS
【实际结果】junit.framework.AssertionFailedError: expected:&lt;0&gt; but was:&lt;1&gt;
	at junit.framework.Assert.fail(Assert.java:50)
	at junit.framework.Assert.failNotEquals(Assert.java:287)
	at junit.framework.Assert.assertEquals(Assert.java:67)
	at junit.framework.Assert.assertEquals(Assert.java:199)
	at junit.framework.Assert.assertEquals(Assert.java:205)
	at android.os.cts.SecurityFeaturesTest.testPrctlDumpable(SecurityFeaturesTest.java:82)

清零后pass,清零操作步骤:
1、user版本开机后,adb devices检查连接设备,再adb reboot bootloader进fastboot;
2、fastboot模式下,执行fastboot oem zeroflag clr, 然后fastboot oem zeroflag get确保返回0x22, 再fastboot reboot重启;
3、再次重启后,adb devices、adb shell无法连接设备。
八(CtsWindowManagerDeviceTestCases--android.server.wm.AnrTests#slowUiThreadWithKeyEventTriggersAnr)只能用user版本测试,具体报错没找到原因,后面用user版本测又pass了

九

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testRollbackFailsOtherSessions 

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testApkOnlyMultipleStagedPartialRollback 

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testApexAndApkStagedRollback 

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testApkOnlyMultipleStagedRollback 

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testSimultaneousRollbacksBothSucceed 

run cts -m CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testApkOnlyStagedRollback 

解决方法:cts Rollback问题:报告的bugreport搜rollbackReason
例子:CtsRollbackManagerHostTestCases -t com.android.cts.rollback.host.RollbackManagerHostTest#testRollbackFailsOtherSessions  
log中:rollbackReason: REASON_NATIVE_CRASH failedPackageName: thh-2-0 ;和thh-2-0修改相关导致,rollback主要测试apex相关内容及so库等,开机加载是否异常

​CtsViewTestCases --android.view.cts.KeyEventTest#testIsMediaSessionKey 
FAILKeyEvent.java中的isMediaSessionKey方法里面的case KeyEvent.KEYCODE_MUTE被删掉导致

CtsAppSecurityHostTestCases--android.appsecurity.cts.AdoptableHostTest#testPrimaryStorage  FAIL  
问题分析:该测试项主要是测试SD卡存储相关,测试过程中会反复读取SD卡
测试建议:测试前请插入高速大容量SD卡,本地自测使用16GB的卡

十 Android STS 排查方法
常见的fail项 分为如下2种:
测试项中 不包含CVE 的 和 包含CVE 的

1、android.security.sts.Bug_258188673#testPocBug_258188673
这就是不包含CVE的,直接显示为 testPocBug_258188673
如果测试用例名称不包含CVE-ID,谷歌搜索“Android A-[Bug ID]”
2、android.security.cts.CVE_2021_0487#testPocCVE_2021_0487
这就是包含CVE的,直接显示为 testPocCVE_2021_0487

十一 Failures on CtsPermissionTestCases 
java.lang.RuntimeException: java.lang.AssertionError: The job doesn't have requested state waiting yet, current state: ready
1.对比正常和异常log发现执行Running command: cmd jobscheduler get-job-state -u 0 com.google.android.permissioncontroller 6后
正常有log: 	行 43757: 06-20 10:38:40.372 10203 12969 12969 V AccessibilityJobService: accessibility privacy source job created.
	行 43758: 06-20 10:38:40.374 10203 12969 12969 V AccessibilityJobService: accessibility privacy source job started.
异常时没有
2.异常时adb shell  dumpsys jobscheduler   com.google.android.permissioncontroller  > jobs.txt发现
Registered 196 jobs:
  JOB #u0a213/6: 2d94f23 com.google.android.permissioncontroller/com.android.permissioncontroller.privacysources.AccessibilityJobService
    u0a213 tag=*job*/com.google.android.permissioncontroller/com.android.permissioncontroller.privacysources.AccessibilityJobService#6
    Source: uid=u0a213 user=0 pkg=com.google.android.permissioncontroller
    JobInfo:
      Service: com.google.android.permissioncontroller/com.android.permissioncontroller.privacysources.AccessibilityJobService

Restricted due to: thermal.
服务受限的原因是thermal,铜鼓命令查看Thermal Status发现状态是2,会限制job运行,改为1或0可以pass
3通过命令关闭温控可以pass
3.1 adb shell dumpsys thermalservice | grep "Thermal Status"
3.2	如果" Thermal Status	" 值 >= 3 执行第2步	2. adb shell cmd thermalservice override-status 0//关闭温控



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值