Android Go项目预置应用Google GTS测试testPreloadedAppsTargetSdkVersion失败

本文解决了一个Android GO项目的Weather应用无法通过GTS测试的问题,问题源于某些预装应用的目标SDK版本过低。文章详细记录了使用aapt工具获取APK兼容版本信息的过程。

Android GO项目中预置的一个Weather应用,GTS测试通不过。

据log提示,是兼容的SDK目标版本过低导致,GO版本要求必须为API 26+(含26)LOG如下:

03-15 16:43:46 I/ModuleRepo: NRMV6DH6RSIJRGZ9 running 1 test sub-modules, expected to complete in 1m 0s.
03-15 16:43:46 I/CompatibilityTest: Starting 1 test sub-module on NRMV6DH6RSIJRGZ9
03-15 16:44:01 I/ConsoleReporter: [NRMV6DH6RSIJRGZ9] Starting armeabi-v7a GtsPermissionTestCases with 1 test
03-15 16:44:01 I/ConsoleReporter: [1/1 armeabi-v7a GtsPermissionTestCases NRMV6DH6RSIJRGZ9] com.google.android.permission.gts.PreloadAppsTargetSdkVersionTest#testPreloadedAppsTargetSdkVersion fail: java.lang.AssertionError: All preloaded apps must target SDK 26 or higher: com.android.vending targets 25,com.android.mms targets 24,com.tct.weather.go targets 23,com.facebook.lite targets 23,
at org.junit.Assert.fail(Assert.java:88)
at com.google.android.permission.gts.PreloadAppsTargetSdkVersionTest.testPreloadedAppsTargetSdkVersion(PreloadAppsTargetSdkVersionTest.java:78)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:148)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:145)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:764)

通过apktool等工具进行反编译,得不到想要的结果,只有编译工具版本。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tct.weather.go" platformBuildVersionCode="26" platformBuildVersionName="8.0.0">
    <uses-permission android:name="android.permission.INTERNET"/>

原因是,现在的独立apk开发均使用官方推荐的gradle进行编译,实际上AndroidManifest中已经不会直观呈现出对应的兼容版本。

gradle编译兼容版本书写如下:


那么如何才能获取到某APK的兼容版本信息呢?


[解决方案]

通过aapt工具,命令如下:

aapt d badging [apk file].apk

由此,就对应的上了,就可得到该apk对应的兼容版本信息。

user@swd3:~/Documents/apkBackup$ ~/Android/Sdk/build-tools/26.0.3/aapt d badging /local/sdb/Weathe_signed_releasekey_alldpi.apk 
package: name='com.tct.weather.go' versionCode='618019306' versionName='v8.0.2.2.0642.0_51_0129' platformBuildVersionName='8.0.0'
sdkVersion:'21'
targetSdkVersion:'23'
uses-permission: name='android.permission.INTERNET'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值