繁体   English   中英

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

[英]How to build signed apk from Android Studio for Flutter

有没有办法在 Android Studio 中构建一个用于颤振的 apk?

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

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

  • 通过 IDE 构建 APK/AppBundle:

    步骤1

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

    在此处输入图像描述

    第2步

    在新窗口中打开项目:

    在此处输入图像描述

    第三步

    打开项目后,点击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>

要使用 Android Studio 3.5.1 版为 Flutter 创建/生成签名 APK,请执行以下步骤 -

步骤1 :

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

在此处输入图像描述

然后选择新窗口选项,如下所示

在此处输入图像描述

第 2 步

等待一段时间,直到项目同步。 在那之后
从菜单栏中转到Build -> GenerateSigned Bundle/APK...选项,如下所示

在此处输入图像描述

第 3 步:

根据需要选择Android App Bundle 或 APK选项。 (Android App Bundle 是最好的解决方案)并单击Next按钮。

在此处输入图像描述

第4步 :

选择Create new..选项以生成新的签名密钥(当您首次发布应用程序时)

在此处输入图像描述

第 5 步:

填写所有选项如下

在此处输入图像描述

笔记 -

密钥存储路径-

您的密钥存储文件(即.jks文件)存储的路径(如上图所示)。 [最佳方式选择项目目录中的路径。]

密钥库密码-

输入密码,例如123456

密钥别名-

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

密钥密码-

输入密钥密码(选择与密钥存储密码不同的密码)例如key123456

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

证书-

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

然后单击确定,您将看到以下屏幕...

第 6 步-

在此处输入图像描述

第 7 步-

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

在此处输入图像描述

选择选项

构建变体 - 发布

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

第 8 步-

等待一段时间,直到 Gradle Build Running 过程完成,如下所示...

在此处输入图像描述

最后你会得到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在你的命令提示符下。然后你会被要求输入

  • 一个关键别名,
  • 您的证书信息(CN=First and Last Name (??), OU=Organizational Unit, O=Organization, L=City or Locality, S=State or Province, C=Country Code (XX)
  • 一个密钥密码
  • 和密钥库密码

4. 生成您签名的 apk 或捆绑包

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

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

  1. 假设您有一个名为“YourProjectName”的项目...复制您的项目名称,就像我在下面的图片中审查的那样,然后右键单击android文件夹以创建一个新文件。新文件上的名称必须是“你的项目名称_android.iml” step1图片

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

  3. 现在让它在单击上面步骤 2 中的选项后构建,然后单击通常的选项“生成签名的 apk” ,如下图所示最后一步

根据DanyPata对于颤振,您必须设置签名文件,然后运行颤振构建 APK。 运行flutter命令非常重要,这样flutter中添加的所有更改/库也会添加到Android项目中。

步骤1

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

Android Studio 的项目结构窗口截图

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

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

然后构建您的发布 APK 转到顶部主栏上的Build ,然后Build Bundle(s) / APK(s)并选择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'
    }
}

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

每次运行应用程序时,它都会生成 apk。

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

yourProject\build\app\outputs\apk


不要使用 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 Play 上发布,请查看:

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

只需直接从“应用程序直接”打开您现有的颤振应用程序,其中包含直接在 android studio 中的 Android Manifest 目录等 android 文件。 这会将您的项目加载为一个 android 项目,我相信其余部分是不言自明的,您需要做什么。

添加此代码并将其保存在您的应用程序和 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 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM