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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)