Flutter打包APK的几种方式小结

2025-03-31 14:50

本文主要是介绍Flutter打包APK的几种方式小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通...

前言

Flutter打包不同于RN,Flutter可以在Android Studio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式。
通过本篇文章,你将了解到:

Android原生打包APK方式

Fluttwww.chinasem.cner通过原生工程打包方式

Futter工程打包方式

Flutter打包产物分析

1. Android原生打包APK方式

以原生Android工程为例。

  • 设置编译模式

Flutter打包APK的几种方式小结

选择变体,通常有debug和release模式(可以新增不同的模式),默认是debug模式。
我们平时点击Run到设备上就是debug模式。

  • 开始构建

Flutter打包APK的几种方式小结

选择后开始构建,因为前面选的是debug模式,因此此时打出来的包就是debug包。

  • 查看构建产物

Flutter打包APK的几种方式小结

可以看出,build目录下有个debug.apk,说明打包成功。

当然如果要打release包,首先要在build.gradle(module级别)设置签名,而后再按上述的步骤将Build Variant 切换成release模式,接下来www.chinasem.cn的操作与debug模式打包一样的。

release产物如下:

Flutter打包APK的几种方式小结

此处没有设置签名,因此打出来的包有unsigned字样。

2. Flutter通过原生工程打包方式

打开一个Flutter工程,其目录结构如下:

Flutter打包APK的几种方式小结

可以看出,根目录下有个android的目录,使用Android Studio 打开该目录:

China编程

Flutter打包APK的几种方式小结

这就是一个可正常运行的Android 工程,在此处运行与在Flutter 工程里运行效果是一致的。
只不过Build Variant比普通的Android工程多了个profile模式(性能调试时使用,平时用不到)。

因此打开Flutter里的android工程,就可以像普通android工程一样构建、打包。

3. Futter工程打包方式

当然如果你不想既打开Flutter工程,又打开Android工程,其实Flutter工程里也可以编译打包的,归纳为三种方式。

第一种:

Flutter打包APK的几种方式小结

查看产物:

Flutter打包APK的几种方式小结

注意:

此种方式默认是release模式

第二种:
命令行打包,在Android Studio Terminal里输入如下命令

flutter build apk --debug //打debug包
flutter build apk --release //打release包

打包的产物依旧是如上flutter-apk目录。

第三种:
如果嫌每次命令行输入命令麻烦,而只想将包run在设备上,此时依然可以借助IDE。
编辑配置。

Flutter打包APK的几种方式小结

填上"--debug"表示run的是debug包。

javascript

Flutter打包APK的几种方式小结

同样的,填上android"--release"表示run的是release包。

最终配置界面显示如下:

Flutter打包APK的几种方式小结

此时即可随时run不同模式的包。

4. Flutter打包产物分析

debug、release模式下,Flutter业务代码分别以什么样的形式存在呢?

解压apk,查看debug模式下的产物:

Flutter打包APK的几种方式小结

以.bin文件存在,支持JIT(Just-In-Time),有调试信息,支持热重载。

JIT:

定义: JIT 是一种动态编译技术,在运行时将代码从高级语言(如 Dart)即时编译为机器码。
用途:
主要用于开发阶段,支持热重载(Hot Reload)功能。
允许开发者快速查看代码更改的效果,而无需重新启动应用
特点:
不需要提前编译整个应用程序。
运行速度较慢,因为编译是在运行时完成的。
占用更多内存,适合开发环境而非生产环境

解压,查看release模式下的产物:

Flutter打包APK的几种方式小结

最终是打包为了.so文件,支持AOT (Ahead-Of-Time )。 AOT :

定义: AOT 是一种静态编译技术,在构建阶段将代码从高级语言(如 Dart)提前编译为原生机器码。
用途:
主要用于生产环境,确保应用性能最优。
编译后的代码可以直接运行在目标设备上,无需额外的虚拟机或解释器。
特点:
提供更快的应用启动时间和运行速度。
减少内存占用。
不支持热重载,但生成的二进制文件更小、更高效

以上就是Flutter打包APK的几种方式小结的详细内容,更多关于Flutter打包APK的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于Flutter打包APK的几种方式小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154023

相关文章

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr