【发布时间】:2019-11-15 13:49:24
【问题描述】:
我正在尝试为我的应用生成一个签名的 APK,如果我只使用签名 V1,它就可以工作。 当我使用签名 V2 然后使用 keytool 检查 apk 时,输出是:
keytool -list -printcert -jarfile app-release.apk
Not a signed jar file
这里是 build.gradle:
def getProps(path) {
Properties props = new Properties()
props.load(project.rootProject.file(path).newDataInputStream())
return props
}
android {
...
signingConfigs {
debug {
try {
Properties props = getProps('./local.properties')
storeFile file(props.getProperty('DEBUG_STORE_FILE', ''))
keyAlias props.getProperty('DEBUG_KEY_ALIAS', '')
keyPassword props.getProperty('DEBUG_STORE_PASSWORD', '')
storePassword props.getProperty('DEBUG_STORE_PASSWORD', '')
v1SigningEnabled true
v2SigningEnabled false // enabling this generates unsigned apk
}
catch (ex) {
throw new InvalidUserDataException("You should define RELEASE_STORE_FILE, RELEASE_KEY_ALIAS, RELEASE_STORE_PASSWORD in local.properties.")
}
}
release {
try {
Properties props = getProps('./local.properties')
storeFile file(props.getProperty('RELEASE_STORE_FILE', ''))
keyAlias props.getProperty('RELEASE_KEY_ALIAS', '')
keyPassword props.getProperty('RELEASE_STORE_PASSWORD', '')
storePassword props.getProperty('RELEASE_STORE_PASSWORD', '')
v1SigningEnabled true
v2SigningEnabled false // enabling this generates unsigned apk
}
catch (ex) {
throw new InvalidUserDataException("You should define RELEASE_STORE_FILE, RELEASE_KEY_ALIAS, RELEASE_STORE_PASSWORD in local.properties.")
}
}
}
defaultConfig {
...
// Only productionRelease flavour uses signingConfigs.release;
// other flavours(i.e. productionDebug, developmentDebug, developmentRelease)
// use signingConfigs.debug
// https://stackoverflow.com/questions/30898611/gradle-signing-flavors-with-different-keys-on-android
signingConfig signingConfigs.release
}
buildTypes {
release {
...
}
debug {
...
signingConfig signingConfigs.debug
}
}
// Dimensions: environment can be one of [development, production]
flavorDimensions "environment"
productFlavors {
development {
...
signingConfig signingConfigs.debug
...
}
production {
dimension "environment"
}
}
...
}
我还从头开始创建了一个新的 Android 项目,它也有同样的问题。
请注意,我有另一个 Android 项目,它可以生成选择 V1 和 V2 的签名 APK。
为什么添加签名 V2 会导致生成未签名的 APK?
【问题讨论】:
-
你的 minSdkVersion 是多少?
-
minSdkVersion 24, targetSdkVersion 27, compileSdkVersion 28
-
顺便说一句,截至今天,我无法在 Windows 上重现 Android Studio 3.5.3 的问题。我想我遇到它时使用的是Android Studio 3.5.2。
-
我在Android Studio 3.6.1上遇到过,请稍后看我的帖子
标签: android signed-apk