Flutter android 自定义签名打包release

在 Flutter 中打包 Android APK 并使用自定义签名,可以通过以下步骤实现:

  1. 使用 keytool 生成签名证书,placement certificate
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

这会生成 my-release-key.keystore 和 my-key-alias。

  1. 将 my-release-key.keystore 文件放到 android/app/ 目录下。
  2. 编辑 android/app/build.gradle,添加 signingConfigs:
android {
  ...
  signingConfigs {
    release {
      keyAlias 'my-key-alias'
      keyPassword '***' 
      storeFile file('my-release-key.keystore')
      storePassword '***'
    }
  }
  buildTypes {
    ...
    release {
      signingConfig signingConfigs.release
    }
  }
}

填入 keystore 的密码。

  1. 最后使用 flutter build apk --release 进行签名打包。

这样 Flutter 打包出的 APK 将使用我们自定义的签名和证书了。

每次打包都需要提供相同的签名,否则会提示签名不匹配。

自定义签名可以避免 DEBUG 证书的限制,并可用于发布到应用商店。

Flutter在构建和签名Release版本的Android APK时,默认是使用的jarsigner工具,而不是apksigner。

在Android Studio/Gradle构建系统中,负责对APK进行签名的任务是SignApk,执行过程大致如下:

  1. 通过Zip任务生成未签名的APK文件
  2. 调用jarsigner命令对APK进行签名,生成签名后的APK
  3. 调用zipalign对签名后的APK进行对齐优化

所以实际签名工具是jarsigner。

而apksigner是Android新推出的签名工具,需要Gradle插件3.0+和Android SDK Build-tools 28+才支持。

Flutter目前还没有迁移到使用apksigner,所以生成的APK默认是用jarsigner签名的。

如果要使用新版apksigner,需要在app/build.gradle里配置:

android {
  ...
  
  signingConfigs {
    release {
      storeFile file('mykey.jks')
      storePassword '***'
      keyAlias 'myalias'
      keyPassword '***' 
    }
  }

  buildTypes {
    release {
      signingConfig signingConfigs.release
    }
  }

  bundle {
    ...
    signing {
        useApkSigner true
    }
  }
}

并更新Gradle插件和build-tools版本。

那么Flutter就会用apksigner对APK进行v2签名。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值