Flutter Mac环境下打包apk和ipa步骤

Mac天然支持下载Xcode和AndroidStudio,这点对于开发非常友好,Windows打ipa请先配置好环境。(我电脑同时下载了Xcode、AndroidStudio、VSCode,平时基本在更加轻量级的VSCode上开发)

一.如何打 apk 包(打包流程略微复杂)

1.检查 & 安装 JDK(全称:Java Development Kit),首先在mac下打开系统偏好设置,看有没有Java图标,(或者检查当前 JDK 的版本号 java -version,如果已经显示当前 java version 版本号,说明 JDK 安装成功,或者之前就安装过,如果已经安装,可以忽略下面的安装步骤) 下载安装地址 :

1.1推荐方式一安装https://www.java.com/zh-CN/download/

Flutter Mac环境下打包apk和ipa步骤_第1张图片

1.2 可以选择终端安装 brew cask install oracle-jdk,显示 brew cask install oracle-jdk 即是安装成功。 因为我需要更新 Homebrew,所以使用官网下载安装的方式

  1. JDK 官网下载地址,下载对应的版本,我的是 MBP,所以选择了 macOS Installer
  2. 安装成功后,用终端打开环境配置文件:vim .bash_profile,增加 export JAVA_HOME=$(/usr/libexec/java_home)
  3. 保存并退出 esc -> wq
  4. 执行 source .bash_profile 更新配置文件并生效
  5. 检查 JDK 的版本号 ,看是否成功

2.生成签名证书 .jks

创建keystore
如果你之前已经创建过keystore的话,可以跳过此步骤。如果没有,请打开终端运行以下命令来创建一个:

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

2.1 现在安卓的keystore(Eclipse下的产物),现在已经升级成jks需要执行以下命令:

-alias 后需要替换为自己的别名(一般是项目名)

keytool -importkeystore -srckeystore /Users/用户名/key.jks -destkeystore /Users/用户名/key.jks -deststoretype pkcs12

(温馨提示:用户名需要替换成自己的)
Flutter Mac环境下打包apk和ipa步骤_第2张图片

genkey : 产生密钥 

<存放的路径>/sign.jks :证书的存放路径和名字

keyalg RSA -keysize 2048 :使用 2048 位 RSA 算法对签名加密

validity 10000 :有效期时间,这里是 10000天

alias sign : 别名 sign

3.在应用程序中引用jks

在应用程序中引用jks
首先创建一个文件key.properties
路径为/android/key.properties,其中就是你app的文件路径,

key.properties为文件名

Flutter Mac环境下打包apk和ipa步骤_第3张图片

Flutter Mac环境下打包apk和ipa步骤_第4张图片

 在该文件中输入对应的配置

storePassword=<生成keystore时设置的密码>
keyPassword=<生成keystore时设置的密码>
keyAlias=key //注意key为自己随意起的别名替换为自己的
storeFile=/key.jks>即生成文件的key.jks的文件路径

在gradle中配置签名
配置的文件路径为/android/app/build.gradle为应用配置

4.build.gradle配置jks相关引用路径和打包设置,一般是把jks添加到app文件夹下方便使用

Flutter Mac环境下打包apk和ipa步骤_第5张图片

 5.build.gradle文件需要以下修改

 signingConfigs {
        debug {
            //jks中key的别名
            keyAlias 'key'
            //jks中key的密码
            keyPassword '123456'
            //jks的文件路径,可以是绝对路径也可以是相对路径
            storeFile file('../key.jks')
            //jks的密码
            storePassword '123456'
        }
        release {
            //jks中key的别名
            keyAlias 'key'
            //jks中key的密码
            keyPassword '123456'
            //jks的文件路径,可以是绝对路径也可以是相对路径
            storeFile file('../key.jks')
            //jks的密码
            storePassword '123456'
        }
    }
buildTypes {
        debug {
            // 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

            //关闭混淆, 否则在运行release包后可能出现运行崩溃, TODO后续进行混淆配置
            minifyEnabled false //删除无用代码
            shrinkResources false //删除无用资源
        }
        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

            //关闭混淆, 否则在运行release包后可能出现运行崩溃, TODO后续进行混淆配置
            minifyEnabled false //删除无用代码
            shrinkResources false //删除无用资源
        }
    }

6.在 VSCode 中的 终端中输入 flutter build apk,如果最终显示 ✓ Built ***,说明打包成功。

build/app/outputs/flutter-apk/app-release.apk是在项目中的子路径,到这里,APK 打包就已经顺利成功。

二、如何打包ipa

方法一:推荐:其实iOS的打包完全可以使用之前开发iOS的方式。

方法二:

flutter build ios --debug
flutter build ios --release

编译目录:

项目工程目录/build/ios/iphoneos/Runner.app

然后我们要创建一个名为Demo(自己app的名字)的文件夹,然后把Runner.app粘贴到Demo文件下,然后对Demo压缩成.zip,然后将Demo.zip重命名为Demo.ipa即可,至此ipa制作完成。

Flutter Mac环境下打包apk和ipa步骤_第6张图片 Flutter Mac环境下打包apk和ipa步骤_第7张图片

你可能感兴趣的:(Flutter,macos)