【问题标题】:You uploaded an APK that was signed in debug mode. You need to sign your APK in release mode error您上传了一个在调试模式下签名的 APK。 You need to sign your APK in release mode error
【发布时间】:2013-05-16 21:15:46
【问题描述】:

我正在尝试在 Google Play 商店上传应用程序。我正在构建 .apk 并使用 Maven 对其进行签名。我已使用 maven-jarsigner-plugin 对 .apk 文件进行签名。我正在使用我使用 Eclipse 向导创建的密钥来签署另一个 Android 应用程序。我使用以下命令压缩 .apk 文件: zipalign [-f] [-v] infile.apk outfile.apk

当我尝试在 Playstore 上上传应用程序时,我收到错误您上传了一个在调试模式下签名的 APK。您需要在发布模式下签署您的 APK。谁能告诉我如何在发布模式下签署apk?我是 Maven 新手(今天开始使用它)。 谢谢

【问题讨论】:

标签: android maven google-play jarsigner


【解决方案1】:

更改为: 签名配置signingConfigs.release

来自 签名配置signingConfigs.debug

在您的 build.gradle 应用程序级别

【讨论】:

  • 我在尝试部署 Flutter 应用程序时花了几个小时来处理这个问题,这肯定需要更好地记录,文件中的简单 TODO 是不够的......谢谢!
  • @mchurichi 其实这里有记录 flutter.dev/docs/deployment/android#configure-signing-in-gradle ,但我也错过了
  • 对我不起作用,在运行flutter build apk --release时给了Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.
  • 它有效!非常感谢!
【解决方案2】:

我不知道您是如何在 Maven 中做到这一点的,但您需要使用发布密钥库编译您的应用程序。您可以使用keytool 创建一个,它位于您的 Java bin 文件夹中:

$ keytool -genkey -v -keystore my-release-key.keystore
-alias alias_name -keyalg RSA -keysize 2048 -validity 10000

创建时,您必须提供两个密码,一个用于密钥库,一个用于密钥。创建密钥库后,您可以使用 Eclipse 导出向导在发布模式下编译您的应用程序。

更多详情请参考http://developer.android.com/tools/publishing/app-signing.html#releasemode

【讨论】:

  • 问题是我不想使用 Eclipse 来编译应用程序。我试过了,并且能够毫无问题地做到这一点。我需要使用 Maven 编译它,
  • 这是正确的解释,在maven上使用这个生成的keystore就行了!
【解决方案3】:

转到 android/app/build.gradle

文件末尾:

buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug <==== change this to release
    }
}

结果应该是这样的:

buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.release
    }
}

【讨论】:

  • 它有效!非常感谢!
【解决方案4】:

始终使用包含“release”而不是“debug”的名称和别名创建您的密钥库。如果您遇到“您上传了一个在调试模式下签名的 APK。您需要在发布模式下签名您的 APK 错误”,则可以确定您使用的是默认密钥库,即“debug.keystore”,因此在调试模式下生成 apk。

解决方案

  1. 生成新的密钥库
  2. 在 build.gradle 文件中提供参考
  3. 将构建变体更改为“发布”
  4. 构建

这应该可以解决问题。

【讨论】:

    【解决方案5】:

    我的 Flutter 应用也遇到了同样的问题,

    将这些添加到您的 android/app/build.摇篮:

    在安卓{之前 compileSdkVersion 30

    def keystoreProperties = new Properties()
    def keystorePropertiesFile = rootProject.file('key.properties')
    if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    }
    

    在defaultConfig之后{

    }
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
    

    【讨论】:

      【解决方案6】:

      对于颤振错误, 默认情况下,flutter 创建如下构建类型

        buildTypes {
          release {
              // TODO: Add your own signing config for the release build.
              // Signing with the debug keys for now, so `flutter run --release` works.
              signingConfig signingConfigs.debug
          }
      }
      

      您应该更改签名配置行

              signingConfig signingConfigs.release
      

      【讨论】:

        【解决方案7】:

        使用 -genkeypair 而不是 -genkey 为我解决了这个问题。

        所以:keytool -genkeypair -keystore name.keystore -alias nameapp -keyalg RSA

        【讨论】:

          猜你喜欢
          • 2016-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-12
          • 1970-01-01
          相关资源
          最近更新 更多