如何建立签名的Appbundle

时间:2019-11-15 09:57:48

标签: flutter android-app-bundle

在创建签名的apk文件之前,我们将版本从1.00提升到了1.7.8。 flutter build apk --flavor production 它将自动生成签名的apk文件。

但是在将其升级到1.7.8之后 我尝试过

flutter build appbundle --flavor production

当我将其上传到Google Play商店时, 它说我的应用程序未签名。

当我尝试生成aab文件而不是apk文件时,我还有什么要做的事情吗?

我像以前一样保持设置

 signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
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
        }
    }

我有一个名为key.properties的文件,用于存储signingConfig的值

2 个答案:

答案 0 :(得分:1)

要将aab上传到Google Play,您必须先注册Google Play进行的应用签名。

在此处检查详细信息: https://support.google.com/googleplay/android-developer/answer/7384423

参考: https://developer.android.com/guide/app-bundle/

  
      
  1. 通过Google Play注册应用签名。否则,您将无法将应用程序捆绑包上传到Play控制台。
  2.   

答案 1 :(得分:1)

如果有人想制作唱歌apk或应用程序包。所以下面的步骤应该是方式。

01=> 签署应用

要在 Play 商店上发布,您需要为您的应用提供数字签名。使用以下说明为您的应用程序签名。 01.1) 创建密钥库 如果您有现有的密钥库,请跳到下一步。如果没有,请通过在命令行运行以下命令来创建一个: 在 Mac/Linux 上,使用以下命令:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 
2048 -validity 10000 -alias key`

在 Windows 上,使用以下命令:

keytool -genkey -v -keystore c:\Users\USER_NAME\key.jks -storetype 
JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key

此命令将 key.jks 文件存储在您的主目录中。如果要将其存储在其他地方,请更改传递给 -keystore 参数的参数。但是,请将密钥库文件保密;不要将其签入公共源代码管理!

注意: • keytool 命令可能不在您的路径中——它是 Java 的一部分,作为 Android Studio 的一部分安装。对于具体路径,运行 flutter doctor -v 并找到打印在“Java binary at:”之后的路径。然后使用完全限定的路径用 keytool 替换 java(最后)。如果您的路径包含空格分隔的名称,例如 Program Files,请使用适合平台的名称表示法。例如,在 Mac/Linux 上使用 Program\ Files,在 Windows 上使用“Program Files”。

• 只有Java 9 或更新版本才需要-storetype JKS 标记。从 Java 9 版本开始,密钥库类型默认为 PKS12。

01.2) 从应用程序引用密钥库 创建一个名为 /android/key.properties 的文件,其中包含对您的密钥库的引用:

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, such as /Users/<user name>/key.jks>

警告:将 key.properties 文件保密;不要将其签入公共源代码管理。

01.3) 在 gradle 中配置签名 通过编辑 /android/app/build.gradle 文件为您的应用配置签名。

  1. 在android块前添加代码:

    安卓{ ... }

使用属性文件中的密钥库信息:

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

   android {
         ...
   }

将 key.properties 文件加载到 keystoreProperties 对象中。

  1. 在 buildTypes 块之前添加代码:

    构建类型{ 发布 { // TODO:为发布版本添加您自己的签名配置。 // 现在使用调试密钥签名, // 所以 flutter run --release 有效。 签名配置signingConfigs.debug } }

使用签名配置信息:

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

在模块的 build.gradle 文件中配置 signingConfigs 块。 现在将自动对您应用的发布版本进行签名。

注意:您可能需要在更改 gradle 文件后运行 flutter clean。这可以防止缓存构建影响签名过程。 有关为您的应用签名的更多信息,请参阅 developer.android.com 上的 Sign your app

如果你想制作唱歌APK,那么在项目终端运行

flutter build apk

如果你想制作 App Bundle 则在项目终端运行

 flutter build appbundle

注意:混淆和缩小会显着延长 Android 应用程序的编译时间。

警告:最近,Flutter 团队收到了几份来自开发者的报告,表明他们在 Android 6.0 上的某些设备上遇到了应用程序崩溃的问题。如果您的目标是 Android 6.0,请使用以下步骤:

• 如果您构建 App Bundle 编辑 android/gradle.properties 并添加标志:

android.bundle.enableUncompressedNativeLibs=false.

• 如果您构建 APK 确保未设置 android/app/src/AndroidManifest.xml

android:extractNativeLibs=false

在标签中。

详情https://flutter.dev/docs/deployment/android