android sign 签名apk流程

 

生成上传密钥和密钥库

如果还没有上传密钥(选择加入 Google Play 应用签名计划时需要使用),您可以使用 Android Studio 生成一个,具体步骤如下所示:

  1. 在菜单栏中依次点击 Build > Build > Generate Signed Bundle/APK
  2. 在 Generate Signed Bundle or APK 对话框中,选择 Android App Bundle 或 APK,然后点击 Next
  3. 在 Key store path 字段下,点击 Create new
  4. 在 New Key Store 窗口中,为您的密钥库和密钥提供以下信息,如图 2 所示。

  5. 图 2. 在 Android Studio 中创建新的上传密钥和密钥库。

  6. 密钥库

    • Key store path:选择创建密钥库的位置。
    • Password:为您的密钥库创建并确认一个安全的密码。
  7. 密钥

    • Alias:为您的密钥输入一个标识名。
    • Password:为您的密钥创建并确认一个安全的密码。此密码应该与您为密钥库选择的密码不同。
    • Validity (years):以年为单位设置密钥的有效时长。密钥的有效期应至少为 25 年,以便您可以在应用的整个生命期内使用同一密钥为应用更新签名。
    • Certificate:为证书输入一些关于您本人的信息。此信息不会显示在应用中,但会作为 APK 的一部分包含在您的证书中。
  8. 填写完表单后,请点击 OK

  9. 如果您想要使用上传密钥来构建您的应用并为其签名,请转到介绍如何使用上传密钥为应用签名的部分。如果只想生成密钥和密钥库,请点击 Cancel

使用密钥为应用签名

如果已有上传密钥,您可以使用它为您的应用签名。而如果您的应用已使用现有的应用签名密钥签名并发布到 Google Play 商店,您可以使用该密钥为您的应用签名并且确保将其加密并导出,以选择将您的应用加入 Google Play 应用签名计划。您以后可以生成单独的上传密钥,并向 Google Play 注册上传密钥的公钥证书,以便为您应用的后续更新签名并进行上传。

要使用 Android Studio 为您的应用签名,并导出现有的应用签名密钥,请按以下步骤操作:

  1. 如果您目前没有打开 Generate Signed Bundle or APK 对话框,请依次点击 Build > Generate Signed Bundle/APK
  2. 在 Generate Signed Bundle or APK 对话框中,选择 Android App Bundle 或 APK,然后点击 Next
  3. 从下拉菜单中选择一个模块。
  4. 指定密钥库的路径、密钥的别名,然后输入二者的密码。如果您尚未准备好上传密钥库和密钥,请先生成上传密钥和密钥库,然后返回完成此步骤。

     

    图 3. 使用上传密钥为应用签名。

     

  5. 如果您要使用现有的应用签名密钥为 app bundle 签名,并且想要以后再选择将您的应用加入 Google Play 应用签名计划,请勾选 Export encrypted key 旁边的复选框,并指定一个路径以将签名密钥另存为加密的 *.pepk 文件。然后,您可以使用加密的应用签名密钥选择将现有应用加入 Google Play 应用签名计划

  6. 点击 Next

  7. 在下一个窗口(如图 4 所示)中,为签名的应用选择一个目标文件夹、选择构建类型,然后选择产品变种(如果适用)。

  8. 如果要构建 APK 并为其签名,您需要选择希望您的应用支持的签名版本。要了解详情,请阅读应用签名方案

    注意:对于尚未使用现有签名证书谱系发布的 APK,Google Play 支持 APK 签名方案 v3

  9. 点击 Finish

     

    图 4. 针对所选产品变种生成应用的签名版本。

     

    注意:如果您的项目使用了产品变种,那么在 Windows/Linux 上按住 Ctrl 键或者在 Mac OS X 上按住 Command 键就可以选择多个产品变种。Android Studio 会为您选择的每个产品变种分别生成单独的 APK 或 app bundle。

 

图 5. 点击弹出式窗口中的链接即可分析或找到您的 app bundle,或找到您导出的签名密钥。

在 Android Studio 构建完您的签名应用后,您可以通过点击弹出式通知中的相应选项来找到分析您的应用。如果选择了导出签名密钥的选项,您可以通过点击弹出式窗口右下角的下拉箭头将其展开,然后点击 Show Exported Key File(如图 5 所示)来快速转到该密钥。

现在,您可以随时选择将您的应用加入 Google Play 应用签名计划并上传应用以进行发布。如果不熟悉应用发布流程,您可能需要参阅发布概览。否则,请转到介绍如何将您的应用上传到 Play 管理中心的页面。

​​​​​

Flutter给Android应用签名

 

给Google Play交了25美元保护费,琢磨着把博客的App上架,上架的前提就是给应用签名。如下:

$ keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias androidKey
记得妥善保管这个key

这个步骤里会要你填密码什么的,记住它们,下面还要用。

然后进到app源码目录编辑 android/key.properties 保存以下内容:

storePassword=<你刚才填写的密码>
keyPassword=<你刚才填写的密码>
keyAlias=androidKey
storeFile=<密钥的绝对路径>
记得把这个文件加到  .gitignore 里: echo 'android/key.properties' >> .gitignore

然后编辑 android/app/build.gradle,把 android { 替换成:

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

android {

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
       }
   }

替换成

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

最后,记得要替换一下应用的图标,我用 这个库 一键替换了。


我上传到Google Play之后,Google Play提示我 “You uploaded an APK or Android App Bundle that was signed in debug mode. You need to sign your APK or Android App Bundle in release mode”,说我上传了一个debug模式签名的apk,我需要以release 模式重新打包,问题是我就是使用 flutter build apk 打包生成的呀,这就很奇怪了。最后解决方案是执行 flutter clean, 估计是因为此前我就在真机上安装过打包好的应用,而flutter为了加快打包速度缓存了一些什么。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值