如何从 Android Studio for Flutter 构建签名的 apk

How to build signed apk from Android Studio for Flutter

有没有办法在 Android Studio 中为 flutter 构建 apk?

我看过这条指南:https://flutter.dev/docs/deployment/android
但是这里使用flutter console来构建apk。

每次你 运行 你的应用程序,它都会生成 apks。

您可以在您的项目文件中找到它:

yourProject\build\app\outputs\apk

根据 DanyPata 对于 flutter,您必须设置签名文件,然后 运行 flutter build APK。相当重要的是运行 flutter命令,这样在flutter中添加的所有changes/libs也会在Android项目中添加。

步骤 1

转到 File - Project StructureModules 下的 select app。注意:它可能不会被称为 app- 它可能是您在创建项目时给它起的任何名称。 Select Signing 选项卡。

您需要创建证书,因此请单击蓝色加号并填写空白。完成此过程后,请转到 Build Types 选项卡并确保您有两个 - debugrelease,如果没有 release,则再次按蓝色加号并创建它。

对于发布版本,您需要 select 您之前创建的 Signing Config 并将其余部分保留为默认值。

然后要构建您的发布 APK,请转到顶部主栏上的 Build,然后是 Build Bundle(s) / APK(s) 和 select Build APK(s).

密切关注 Event Log 以查看其完成时间以及 APK 保存到的路径。

第 2 步

更新 gradle.build 文件。确保您的项目可见性设置为类似 Project 这样您就可以看到文件树中的所有文件。

前往 yourapp/src 然后打开 build.gradle

下,android添加:

buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.theNameForCertificateYouCreated
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

重要提示:作为快速提醒和预防措施,不要丢失它创建的密钥。否则,您将无法更新您的应用程序,因为新版本需要使用相同的密钥进行签名。

您可以使用 IDE 和命令行构建 Apk/AppBundle。

  • 建设 APK/AppBundle 通过 IDE:

    第一步

    在 Android Studio 的标签栏中,点击 Tools 然后 Flutter 然后 Open Android module in Android Studio:

    第 2 步

    在新文件中打开项目 Window:

    第 3 步

    打开项目后,单击 Build,然后单击 Generate Signed Bundle / APK ...


  • 通过命令构建APK/AppBundle:

    第 1 步:

    修改您的 build.gradle(app) 文件并在其中包含您的关键信息:

    android {
        compileSdkVersion 31
        signingConfigs {
            release {
                storeFile file("<path-to-keys.jks>")
                storePassword "********"
                keyAlias "<key-alias>"
                keyPassword "********"
            }
        }
        buildTypes {
            release {
                signingConfig signingConfigs.release
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    

    第 2 步:

    构建 AppBundle:

    flutter build appbundle --target-platform android-arm,android-arm64,android-x64 --obfuscate --split-debug-info=/<directory>
    

    构建 APK:

    flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --obfuscate --split-debug-info=/<directory>
    

对于 create/generate 使用 Android Studio 版本 3.5.1 for Flutter 签名的 APK 请按照以下步骤操作 -

第 1 步:

转到您的项目,然后 工具 -> Flutter -> 在 Android Studio 中打开以进行编辑,如下所示

然后Select新建Window选项如下图

步骤 2 :

等待项目同步。之后
从菜单栏转到 Build -> GenerateSigned Bundle/APK... 选项,如下所示

第 3 步:

Select Android App Bundle 或 APK 根据您的需要选择。 (Android App Bundle 是最佳解决方案)并单击 下一步 按钮。

第 4 步:

Select 创建新的.. 选项以生成新的签名密钥(当您首次发布应用时)

第 5 步:

填写所有选项如下

注-

密钥存储路径 -

密钥存储文件的路径,即 .jks 文件的存储路径(如上图所示)。 [最好的方法 Select 项目目录中的路径。]

密钥库密码 -

输入密码 例如123456

密钥别名 -

输入密钥别名(.jks 文件的名称),例如

密钥密码-

输入密钥密码(选择不同于密钥库密码的密码) 例如key123456

有效期(年) - 保持原样或根据您的要求进行更改。

证书-

填写证书信息(并非所有字段都是必填项)

然后点击确定你会看到如下画面...

步骤 6 -

第 7 步 -

单击下一步按钮,您将看到以下屏幕...

Select 选项

构建变体 - 发布

签名版本 V1 和 V2 分别如上图所示,然后单击 完成按钮。

第 8 步 -

稍等片刻,直到 Gradle 构建 运行 过程完成,如下所示...

最后你会得到 Generate Signed APK : (APKs) generated successfully 。 通过点击 Locate 选项来获取 Generate Signed APK Key 的位置。如下所示。

至此,您已为您的 Flutter 项目成功生成 Signed APK。

重要提示:

请不要丢失密钥及其所有信息,即密钥存储路径、密钥存储密码、密钥别名和密钥密码(最好将其记在笔记本上或制作文本文件并在生成时存储在您的驱动器上。)。 否则,您将无法更新您的应用程序,因为新版本需要使用相同的密钥进行签名。

希望您能得到详细的信息。

除了使用 Android Studios UI,您还可以轻松地使用命令提示符。这种方式对我来说更容易,因为我在使用 ui.

创建签名的 apk 时遇到了很多问题

在创建签名 APK 之前,您必须准备项目。

1.将 Flutter 自动化依赖项添加到 pubspec.yaml

dependencies:  
    flutter:  
        sdk: flutter  
    flutter_automation: ^1.1.4    

目前 ^1.1.4 是最新的依赖项,这最终会改变。

2。获取新的依赖

运行 flutter packages get 在项目目录中的命令提示符中

3。设置签名

运行 flutter pub pub run flutter_automation --android-sign在您的命令中 prompt.Then 您将被要求输入

  • 密钥别名,
  • 您的证书信息(CN=名字和姓氏(??),OU=组织单位,O=组织,L=城市或地区,S=州或省,C=国家代码(XX)
  • 一键密码
  • 和密钥库密码

4。生成您签名的 apk 或 bundle

只需 运行 flutter build apk --split-per-abiflutter build appbundle 即可生成已签名的 apk/bundle 您的应用程序。

我找到了一个永久的解决方案

只需直接从 “直接应用” 打开现有的 Flutter 应用,其中包含直接在 [=18] 中的 android 文件,例如 Android Manifest 目录=]工作室。这会将您的项目作为 android 项目加载,我相信其余的事情不言自明。

对于对每个人都有帮助的完整解决方案,(包括那些找不到 “在 android studio 中打开编辑” sdk 中的选项)按照以下步骤操作..

  1. 假设您有一个项目名为 "YourProjectName"... 将您的项目名称复制为 flutter我在下面的图片中进行了审查,然后右键单击 android 文件夹以创建一个新文件。新文件上的名称必须是 "YourProjectName_android.iml "

  2. 按照步骤 1 中描述的格式创建文件后,您现在将完全看到 “在 android studio 中打开以进行编辑” 选项..

  3. 现在点击上面第 2 步中的选项后让它构建,然后点击通常的选项 “生成签名的 apk”,如您在下图

添加此代码并将其保存在您的应用程序中 android.iml

<?xml version="1.0" encoding="UTF-8"?>
    <module type="JAVA_MODULE" version="4">
      <component name="FacetManager">
        <facet type="android" name="Android">
          <configuration>
            <option name="ALLOW_USER_CONFIGURATION" value="false" />
            <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" />
            <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" />
            <option name="MANIFEST_FILE_RELATIVE_PATH" value="/app/src/main/AndroidManifest.xml" />
            <option name="RES_FOLDER_RELATIVE_PATH" value="/app/src/main/res" />
            <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/app/src/main/assets" />
            <option name="LIBS_FOLDER_RELATIVE_PATH" value="/app/src/main/libs" />
            <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/app/src/main/proguard_logs" />
          </configuration>
        </facet>
      </component>
      <component name="NewModuleRootManager" inherit-compiler-output="true">
        <exclude-output />
        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$/app/src/main/java" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/app/src/main/kotlin" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
        </content>
        <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="library" name="Flutter for Android" level="project" />
        <orderEntry type="library" name="KotlinJavaRuntime" level="project" />
      </component>
    </module>

不要使用 Android Studio 密钥生成 GUI

不要使用 Android Studio 密钥生成 GUI

不要使用 Android Studio 密钥生成 GUI


只需运行命令行中的以下内容:

在 Mac/Linux 上,使用以下命令:

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

在 Windows 上,使用以下命令:

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

下一步并在 Google 上发布 播放查看:

除了使用 Android Studios UI,您还可以轻松地使用命令提示符。

按照以下步骤使用命令行在 flutter 中生成签名的 apk。

  • 第一步:生成keystone文件

    运行在命令行中执行以下操作:

    在Mac/Linux,

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

    在Windows,

    keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
    
  • 第 2 步:修改您的 build.gradle(app) 文件

    build.gradle(app) 文件中包含您的关键信息:

    android {
      compileSdkVersion 31
      signingConfigs {
          release {
              storeFile file("<path-to-keys.jks>")
              storePassword "********"
              keyAlias "<key-alias>"
              keyPassword "********"
          }
      }
      buildTypes {
          release {
              signingConfig signingConfigs.release
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
    }
    
  • 步骤 3:生成 apk

    运行从flutter根目录使用命令行执行以下命令。

    flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --obfuscate --split-debug-info=/<directory>
    

    提供一个有效的目录路径 split-debug-info

    构建将在 build\app\outputs\flutter-apk 文件夹下生成。

更多:https://docs.flutter.dev/deployment/android