Android 包测试没有匹配目标的签名
Android package test does not have a signature matching the target
关于应用签名有很多类似的问题,like this。
但是 none 是我的情况。
我曾经有一个 CI 运行 ./gradlew :App:assembleDebug :App:assembleAndroidTest
为了节省时间,我尝试在两个不同的 jobs/pipelines 中并行化两个 assemble 命令
./gradlew :App:assembleDebug
和 ./gradlew :App:assembleAndroidTest
但是现在,我从测试实验室收到了这个错误:
com.company.debug.test does not have a signature matching the target com.company.debug
How/why 当我在另一个实例中编译时签名会改变?解决方案很明确,只需将两者重新组合即可。但我希望了解签名的这种 Android/Gradle 行为。
谢谢!
调试版本使用调试密钥签名,调试密钥由每台机器上的 Android 工具生成。密钥存储在 user home directory 中。 IE。默认情况下,每台机器都有不同的调试签名密钥,彼此不兼容。
我的猜测是您的 CI jobs/pipelines 会做两件事中的一件或两件事:
- 运行 在不同的机器上
- 为每个作业生成一个新的调试密钥,因为您不共享机器环境
一个可能的解决方案是将调试密钥作为存储库的一部分并配置 gradle 以使用该密钥进行签名:
android {
...
signingConfigs {
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
...
}
您可以在 , and the official Android app signing documentation 中找到更多详细信息。
关于应用签名有很多类似的问题,like this。 但是 none 是我的情况。
我曾经有一个 CI 运行 ./gradlew :App:assembleDebug :App:assembleAndroidTest
为了节省时间,我尝试在两个不同的 jobs/pipelines 中并行化两个 assemble 命令
./gradlew :App:assembleDebug
和 ./gradlew :App:assembleAndroidTest
但是现在,我从测试实验室收到了这个错误:
com.company.debug.test does not have a signature matching the target com.company.debug
How/why 当我在另一个实例中编译时签名会改变?解决方案很明确,只需将两者重新组合即可。但我希望了解签名的这种 Android/Gradle 行为。
谢谢!
调试版本使用调试密钥签名,调试密钥由每台机器上的 Android 工具生成。密钥存储在 user home directory 中。 IE。默认情况下,每台机器都有不同的调试签名密钥,彼此不兼容。
我的猜测是您的 CI jobs/pipelines 会做两件事中的一件或两件事:
- 运行 在不同的机器上
- 为每个作业生成一个新的调试密钥,因为您不共享机器环境
一个可能的解决方案是将调试密钥作为存储库的一部分并配置 gradle 以使用该密钥进行签名:
android {
...
signingConfigs {
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
...
}
您可以在