gpt4 book ai didi

android - 没有使用 gradle 插件 2.2.0 生成 "unaligned"apk,破坏了 Spoon runner

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:24 25 4
gpt4 key购买 nike

使用 android gradle 插件2.2.0:

buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}

dependencies {
classpath "com.android.tools.build:gradle:2.2.0"
}
}

并运行./gradlew assembleDebug assembleDebugAndroidTest:

2.2.0:

app-debug.apk
app-debug-androidTest.apk

2.1.3:

app-debug.apk
app-debug-unaligned.apk
app-debug-androidTest.apk
app-debug-androidTest-unaligned.apk

基于这个谷歌问题:https://code.google.com/p/android/issues/detail?id=212591并在这里发表评论:https://code.google.com/p/android/issues/detail?id=212591#c15 :

Hi, we don't generate unaligned apks any more. As part of the improvements to speed things, we generate the apk already aligned. So, instead of two, you just get the final one.

Spoon 需要这些“未对齐”的 apk 来运行它的测试运行器:

java -jar spoon-runner-1.7.0-jar-with-dependencies.jar \
--debug --fail-on-failure --adb-timeout 90 --no-animations \
--apk app-debug.apk \
--test-apk app-debug-androidTest-unaligned.apk

错误:

12:06:48 I/InstrumentationResultParser: test run failed: 'Instrumentation run failed due to 'java.lang.NoClassDefFoundError''
2016-09-23 12:06:48 [STRL.testRunStarted] testCount=0 runName=<>.test
2016-09-23 12:06:48 [STRL.testRunFailed] errorMessage=Instrumentation run failed due to 'java.lang.NoClassDefFoundError'
2016-09-23 12:06:48 [STRL.testRunEnded] elapsedTime=0
12:06:48 I/XmlResultReporter: XML test result file generated at /<>/spoon-output/junit-reports/emulator-5554.xml. Total tests 0,

看起来 Spoon 只接受“未对齐”。

Exception in thread "main" java.lang.IllegalArgumentException: Instrumentation APK path does not exist.
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
at com.squareup.spoon.SpoonRunner$Builder.setInstrumentationApk(SpoonRunner.java:360)
at com.squareup.spoon.SpoonRunner.main(SpoonRunner.java:657)

最佳答案

在 2.2 之前,gradle 插件会生成一个未对齐的 apk,然后运行 ​​zipalign 来对齐它。因此,生成了两个 apk,一个带有“-unaligned”,另一个没有任何特定标记对齐。

在 2.2 中,与此相关的构建管道有很多改进:

  • APK 现在是增量构建的,这意味着当更改单个文件时,只有该文件在 APK 中更新。
  • 生成的 APK 是对齐的,不需要额外的对齐步骤。

这两个中的最后一个在 APK 中启用 V2 签名 ( https://source.android.com/security/apksigning/v2.html ):完整的 APK 签名可以抵抗 APK 中的任何更改(并且验证速度更快)。这意味着 zipalign 无法再在启用了这些签名的 APK 上运行。

因此,简而言之,从 2.2 打包开始速度更快、增量并且不会生成不必要的未对齐 APK。

关于android - 没有使用 gradle 插件 2.2.0 生成 "unaligned"apk,破坏了 Spoon runner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39667882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com