当前位置: 首页 > news >正文

Flutter:打包apk,详细图文介绍(一)

困扰了一天,终于能正常打包apk安装了,记录下打包的流程。建议参考我这篇文章时,同时看下官网的构建说明。
官网构建并发布 Android 应用详情

1、AS创建Flutter项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、cmd执行命令
生成一个sunluyi.jks的文件,可以自行把sunluyi替换)
-alias sunluyi(别名),方便管理都用一个名字

keytool -genkey -v -keystore sunluyi.jks -keyalg RSA -keysize 2048 -validity 10000 -alias sunluyi

在这里插入图片描述
然后你会得到一个命名sunluyi.jks的文件
在这里插入图片描述

3、cmd执行命令,查看文件详情

keytool -list -v -keystore sunluyi.jks

在这里插入图片描述

4、把生成好的.jks文件放在Flutter项目android/app目录下
并在android目录下手动创建key.properties文件

在这里插入图片描述
key.properties文件内容就是第二步自己设置的口令密码和别名storeFile对应的文件路径./sunluyi.jks(app目录)

storePassword=sunluyi
keyPassword=sunluyi
keyAlias=sunluyi
storeFile=./sunluyi.jks

5、修改/android/app/build.gradle文件
下边代码中我标注了哪些是新增的内容,哪些是修改的内容

plugins {id "com.android.application"id "kotlin-android"// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.id "dev.flutter.flutter-gradle-plugin"
}// 新增内容 ↓
def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {localPropertiesFile.withReader("UTF-8") { reader ->localProperties.load(reader)}
}def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {flutterVersionCode = "1"
}def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {flutterVersionName = "1.0"
}def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}// 新增内容↑android {namespace = "com.sunluyi.app.flutter_sunluyi"compileSdk = flutter.compileSdkVersionndkVersion = flutter.ndkVersioncompileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = JavaVersion.VERSION_1_8}defaultConfig {// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).applicationId = "com.sunluyi.app.flutter_sunluyi"// You can update the following values to match your application needs.// For more information, see: https://flutter.dev/to/review-gradle-config.minSdk = flutter.minSdkVersiontargetSdk = flutter.targetSdkVersion// 修改内容 ↓versionCode = flutterVersionCode.toInteger()versionName = flutterVersionName// 修改内容 ↑}// 新增内容 ↓signingConfigs {release {keyAlias = keystoreProperties['keyAlias']keyPassword = keystoreProperties['keyPassword']storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : nullstorePassword = 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// 修改内容 ↑}}
}flutter {source = "../.."
}

6、最后你可能还需要配置应用的权限
/android/app/src/main/AndroidManifest.xml目录

<manifest xmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:label="[project]"...</application>...// 这里是新增的权限<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

打包时有个提示警告:

Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
记录下如何解决。

1cmd执行:flutter doctor -v

下图是我解决过警告的,最开始是Platform android-35, build-tools 34.0.0
在这里插入图片描述
百度了下解决方案:
设置/Android SDK中最开始我是勾选的35,换成下方的勾选之后,再次执行
flutter doctor -v得到:Platform android-35, build-tools 34.0.0
在这里插入图片描述

重新执行flutter build apk后没有警告,完成了打包流程。
在这里插入图片描述

补充内容

这里都选择34
在这里插入图片描述
在这里插入图片描述
最后根目录执行flutter build apk打包成apk文件。
这篇文章内容我是创建的新项目进行打包测试的。
在这里插入图片描述

我的运行环境,希望这篇文章能对你有所帮助

在这里插入图片描述

http://www.lryc.cn/news/513819.html

相关文章:

  • Vue.js组件开发-实现动态切换菜单简单示例
  • 如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程
  • 17爬虫:关于DrissionPage相关内容的学习01
  • 【HarmonyOS之旅】HarmonyOS概述(一)
  • chatwoot 开源客服系统搭建
  • 30分钟搭建 Typecho 个人博客教程
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之7 附件(文档)
  • 鸿蒙应用开发启航计划
  • 基本算法——回归
  • 深度学习——神经网络中前向传播、反向传播与梯度计算原理
  • 解决git push报错:not valid: is this a git repository?
  • 树形查询转成TreeNode[],添加新节点
  • 【Rust自学】8.2. Vector + Enum的应用
  • 攻防世界web第十题Web_python_template_injection
  • vmware 修改Ubuntu终端字体大小
  • API 设计:从基础到最佳实践
  • ROUGE指标在自然语言处理中的应用:从理论到实践
  • GraalVM:云原生时代的Java虚拟机
  • Linux 信号集与信号掩码
  • 如何设置Edge浏览器访问软件
  • DL笔记:旋转编码RoPE
  • C语言自定义类型与文件操作
  • 《计算机网络A》单选题-复习题库解析-3
  • VM虚拟机配置ubuntu网络
  • 【每日学点鸿蒙知识】Web高度适配、变量声明规范、动画取消、签名文件、包体积优化相关
  • uniapp使用ucharts组件
  • LabVIEW工程师的未来发展
  • java的bio、nio、aio 以及操作系统的select、poll、epoll
  • 2024 年发布的 Android AI 手机都有什么功能?
  • RLHF,LM模型