为亚马逊构建未签名的apk文件,为谷歌构建已签名的apk文件。

3

我有两种构建类型(debugrelease)和两种产品风味(googleamazon),我需要能够指定所有变体都使用 signingConfigs.release 进行签名,除了 amazonRelease 变体需要使用 signingConfigs.unsigned 进行签名。

我不确定如何针对特定的构建变体(例如 amazonRelease)来设置其 signingConfig。

这是我目前在我的 build.gradle 中拥有的内容:

android {

  ...

  signingConfigs {
    release {
      storeFile ...;
      keyAlias ...;
      storePassword ...;
      keyPassword ...;
    }

    unsigned {
      keyAlias "";
      storePassword "";
      keyPassword "";
    }
  }

  buildTypes {
    debug {
      versionNameSuffix = "-DEBUG"
    }

    release {
      signingConfig signingConfigs.release;
    }
  }

  flavorGroups "storeFront"

  productFlavors {
    google {
      flavorGroup "storeFront"
    }

    amazon {
      flavorGroup "storeFront"
    }
  }
}

1
你不需要费心,只需将你的正常签名APK提交给亚马逊,他们会用自己的证书重新签名。我将完全相同的APK提交到Google Play和亚马逊,没有任何问题。 - Graham Borland
1
Graham大部分是正确的,你仍然需要从Google Play使用的包名更改包名(即使亚马逊没有严格执行此要求),但现在亚马逊不再要求您提交未签名的应用程序:https://developer.amazon.com/public/support/submitting-your-app/tech-docs/submitting-your-app#Add%20Binary%20Files - Stephan Branczyk
@StephanBranczyk 我想知道我目前如何能够将相同的APK提交到两个商店?你知道是否最近要求具有唯一的亚马逊特定包名称吗? - Graham Borland
1
@GrahamBorland,我不知道。我刚刚检查了Way Back Machine,但是那个特定的文档页面甚至没有被索引。显然,如果他们已经让你在特定的包名称下发布它,那么强迫你进行追溯更改将真的很愚蠢,并且会违背他们作为应用商店的自身利益。 - Stephan Branczyk
我认为我需要一个未签名的APK是为了让Facebook登录正常工作。双重签名会阻止登录工作。如果我上传已签名的APK,他们就不会提供我需要在我的Facebook应用程序仪表板中输入的密钥哈希(至少我找不到)。 - HMCFletch
1个回答

2

引用文档中的内容:

有些情况下,设置可以在构建类型和产品风味上进行设置。在这种情况下,它是基于具体情况而定。

例如,signingConfig就是其中之一。

这使得所有发布包共享相同的SigningConfig成为可能,方法是设置android.buildTypes.release.signingConfig,或者通过单独设置每个android.productFlavors.*.signingConfig对象来让每个发布包使用自己的SigningConfig。

因此,我会尝试删除release signingConfig并将signingConfig属性添加到googleamazon中。如果我正确理解文档,debug signingConfig将覆盖googleamazonsigningConfig属性以进行调试构建,而发布构建将使用在风味上定义的那些属性。


我添加了以下内容,但是GoogleRelease现在抛出两个错误,称找不到值storePasswordkeyPasswordproductFlavors { google { flavorGroup "storeFront" signingConfig signingConfigs.release } amazon { flavorGroup "storeFront" signingConfig signingConfigs.unsigned } } - HMCFletch
@HMCFletch:就你的代码而言,我无法为你提供帮助,因为你没有展示你在使用什么,而且我也不知道你从Gradle那里得到了什么确切的消息(和跟踪信息)。请考虑编辑你的问题,附上最新的已编辑版本的build.gradle文件,以及你所得到的确切输出。 - CommonsWare
我已经追踪到使用System.getenv("RELEASE_PASSWORD")而不是在build.gradle中使用密码文字的一些问题。您的答案适用于文字,所以我会接受它。这似乎是一个完全不同的问题。谢谢! - HMCFletch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接