Flutter(二十四)打包发布

2021-06-21  本文已影响0人  AlanGe

一. Android打包和发布

1.1. 填写应用配置

1.1.1. 基本信息

在之前讲解应用程序的配置信息时,我们已经介绍过,这里不再过多介绍

1.1.2. 版本信息

Flutter的版本信息在哪里填写呢?在pubspec.yaml中

version: 1.0.0+1

第一次见到这个会很疑惑,后面的+1是什么意思呢?

在Android中,应用的版本分为versionCode & versionName

在iOS中,应用的版本分为 version & build

Flutter中我们如何管理这两个版本号呢?

1.1.3. 用户权限配置

在Android中某些用户权限需要在AndroidManifest.xml进行配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.catefavor">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</manifest>

1.2. 应用程序签名

Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装,所以应用程序在发布之前一定要进行签名。

1.2.1. 创建一个秘钥库

在 macOS 或者 Linux 系统上,执行下面的命令:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

在 Windows 系统上,执行下面的命令:

keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
图片

1.2.2. 在app中引用秘钥库

创建一个名为 /android/key.properties 的文件,它包含了密钥库位置的定义:

storePassword=<上一步骤中的密码>
keyPassword=<上一步骤中的密码>
keyAlias=key
storeFile=<密钥库的位置,e.g. /Users/<用户名>/key.jks>

注意:这个文件一般不要提交到代码仓库

# Android ignore
/android/key.properties

1.2.3. 在gradle中配置签名

通过编辑 /android/app/build.gradle 文件来为我们的 app 配置签名:

1.在 android 代码块之前添加:

android {
  ...
}

替换为秘钥库的信息

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
...
}

2.在 buildTypes 代码块之前添加:

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.debug
       }
   }

替换为下面的代码:

signingConfigs {
   release {
       keyAlias keystoreProperties['keyAlias']
       keyPassword keystoreProperties['keyPassword']
       storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
       storePassword keystoreProperties['storePassword']
   }
}
buildTypes {
   release {
       signingConfig signingConfigs.release
   }
}

现在我们发布的app就会被自动签名了

1.3. 打包应用程序

目前Android支持打包两种应用程序:APK、AAB

APK文件:

# 运行 flutter build apk (flutter build 默认带有 --release 参数)
flutter build apk

AAB文件:(推荐)

# 运行 flutter build appbundle。 (运行 flutter build 默认构建一个发布版本。)
flutter build appbundle

1.4. 发布应用程序

Android应用程序可以发布到很多的平台,包括国内的平台和国外的Google Play

国内的应用市场非常多,包括360、百度、小米等等

国外的应用市场通常只有一个Google Play

图片

二. iOS打包和发布

2.1. 填写应用信息

2.1.1. 基本信息

和Android一致

2.1.2. 版本信息

和Android一致

2.1.3. 用户权限配置

在iOS中某些权限,需要用户允许,为了添加这些权限需要配置info.plist文件:

图片

2.2. Apple开发者账号

2.2.1. 申请开发者账号

苹果发布应用程序,必须申请一个Apple开发者账号:

2.2.2. 配置相关证书

发布iOS应用程序需要配置相关的AppID和证书:

图片

2.2.3. 创建发布App

我们需要在App Store创建一个新的应用程序:

图片

2.3. 打包发布应用

2.3.1. Xcode登录AppleID

在Xcode中登录自己的AppleID

图片

2.3.2. 打包和发布应用

应用签名信息:

图片

打包应用程序:

1.设备选择真机(这里必须选择真机)

图片

2.Product -> Archive -> Distribute App

图片 图片

注意:如果之前的应用程序是运行在模拟器上的,那么Archive时会报错

2.4. Application loader

目前很多应用程序的发布喜欢借助于Application loader,所有的流程都可以在这个工具中完成

参考:小码哥Flutter

上一篇下一篇

猜你喜欢

热点阅读