赞
踩
在 IDE 中开启模拟器,可以直接进行 Flutter 调试,但是如果要上真机、模拟器进行测试,那么就需要进行应用构建。
应用构建目标主要区分平台,目前移动端主要有 Android 和 iOS 操作系统。
Android 应用构建分为两种方式: AppBundle 和 APK,目前下面只涉及 APK 方式。
使用的 IDE 是 Android Studio,支持多种语言的高亮、Lint、模拟器、功能插件和各种简便操作、配置的入口。
构建面向 Android 的项目,因为目前 Android 以 Kotlin 为默认编程语言,所以需要 Kotlin 的插件。
构建基础是 Flutter 框架,那么还需要 Dart 和 Flutter 的插件。
项目的基础结构仍旧是 Android 等目标平台结构,以 Android 为例,其构建工具使用 Gradle。
Maven 有两层含义:依赖库和依赖包的管理。顺带会做一些打包构建的工作。
Gradle 接管了依赖包、打包构建的工作,而且更灵活。但依赖库仍旧是 maven。
国内 maven 仓库都非常慢,所以初次构建可能会很慢,如果网络不通,那么也会卡死。
Gradle 中默认配置的 google()
和 mavenCentral()
基本不可用。可以指定优先镜像仓库源,注意 Groovy 语法(百度上有很多瞎写的)。
所以需要的插件至少是:Kotlin / Dart / Flutter / Gradle。
- buildscript {
- ext.kotlin_version = '1.7.10' // 注意这个 Kotlin 的版本需要和 classpath 中指定的版本保持一致
- repositories {
- maven {
- url 'https://maven.aliyun.com/repository/public' // 使用的阿里云镜像,优先级最高
- }
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:7.1.2'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 引用本地插件内嵌的 Kotlin
- }
- }
-
- allprojects {
- repositories {
- maven {
- url 'https://maven.aliyun.com/repository/public' // 应用到全部项目
- }
- google()
- mavenCentral()
- }
- }
-
- rootProject.buildDir = '../build'
- subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
- }
- subprojects {
- project.evaluationDependsOn(':app')
- }
-
- task clean(type: Delete) {
- delete rootProject.buildDir
- }
Android 项目配置文件位置:<app dir>/android/app/src/main/AndroidManifest.xml
。
Gradle 项目构建配置文件:<app dir>/android/build.gradle
。
Gradle 项目构建配置文件:<app dir>/android/app/build.gradle
。
确认 application
配置项中 android:label
配置的 App 名字是否合适。
确认 uses-permission
配置项中是否启用了本地设备权限,比如联网、外部存储、蓝牙等。
defaultConfig
applicationId
指定唯一的 应用 ID。非常重要,决定了 App 在 Play Store 中的唯一身份。
minSdkVersion
指定应用适配的最低 SDK 版本。默认为 flutter.minSdkVersion
。
targetSdkVersion
指定应用适配的目标 SDK 版本。默认为 flutter.targetSdkVersion
。
versionCode
用于内部版本号的正整数。该数字仅用于比较两个版本间数字较大的为更新版本。该版本不会对用户展示。
versionName
向用户展示的版本号。该字段必须设置为原始字符串或字符串资源的引用。
buildToolsVersion
高于 3.0.0 版本的 Android Gradle Plugin 会使用 AGP 默认指定的构建工具版本。此处可手动指定版本。
android
compileSdkVersion
指定 Gradle 用于编译应用的 API 版本。默认为 flutter.compileSdkVersion
,此版本必须满足两个要求:1. 兼容目标运行系统,2. 兼容插件版本要求。比如运行的模拟器版本、目标运行手机系统都是 Android API 33 ,且依赖的 Dart 插件版本也最低要求 33,此处就配 33,否则默认的配置会出问题。
在 <app dir>/android/app/src/main/res/
目录下,把图标放到 mipmap-***
目录下,这是 Android 项目专用的图标目录,适配各个分辨率。
在 <app dir>/android/app/src/main/AndroidManifest.xml
文件中配置 <application android:icon="@mipmap/myIcon.jpg
指定图标。
注意,配置图标 android:icon=
时不能配置后缀名,配错就找不到文件。
在 <app dir>/android/build.gradle
文件中检查 ext.kotlin_version
配置和 dependencies
配置中的 kotlin 版本是否一致,不一致构建能成功但会报错。
注意,图标最好带背景色,然后核心图形在背景色中间。部分平台上不同的主题会对图标进行剪裁,边缘为透明的部分会被自动裁剪掉,所以确保边缘有色彩更美观。
如果需要发布到分发平台上——比如 Play Store,则需要给项目打包结果进行签名。
如果需要减少打包体积,可以使用内置的 R8 压缩引擎压缩打包结果。
如果支持的 Android API 版本低于 20,可能还需要启用 multidex 支持。
运行 flutter build apk --split-per-abi
命令。
--split-per-abi
参数将面向不同架构的包拆分出来,否则将会生成一个包含所有目标架构 ABI 的 fat APK 文件。
flutter build
命令默认带参 --release
。
或者在 工具栏 > Build > Flutter
中选择 Build APK
进行构建。
构建结果在 <app dir>/build/app/outputs/flutter-apk
目录下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。