[英]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。
在 Android Studio 的标签栏中,点击Tools
然后Flutter
然后Open Android module in Android Studio
:
在新窗口中打开项目:
打开项目后,点击Build
然后Generate Signed Bundle / APK ...
修改您的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' } } }
flutter build appbundle --target-platform android-arm,android-arm64,android-x64 --obfuscate --split-debug-info=/<directory>
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
在你的命令提示符下。然后你会被要求输入
4. 生成您签名的 apk 或捆绑包
只需运行flutter build apk --split-per-abi
或flutter build appbundle
即可为您的应用生成签名的 apk/bundle。
根据DanyPata对于颤振,您必须设置签名文件,然后运行颤振构建 APK。 运行flutter命令非常重要,这样flutter中添加的所有更改/库也会添加到Android项目中。
转到File
- Project Structure
并在Modules
下选择app
。 注意:它可能不会被称为app
- 它可能是您在创建项目时给它的任何名称。 选择Signing
选项卡。
您需要创建一个证书,因此单击蓝色加号并填写空白。 完成此过程后,您将转到Build Types
选项卡并确保您有两个 - debug
和release
,如果您没有release
则再次按蓝色加号并创建它。
对于发布版本,您将需要选择您之前创建的Signing Config
并将其余部分保留为默认值。
然后构建您的发布 APK 转到顶部主栏上的Build
,然后Build Bundle(s) / APK(s)
并选择Build APK(s)
。
密切关注Event Log
以查看其完成时间以及 APK 保存到的路径。
更新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
在 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.