Flutter-安卓/iOS打包流程

一.安卓打包

1.使用终端命令生成key(mac环境):

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

将生成的key.jks文件放置到如下图位置

图一

注意:这里的key.jks前面的key就是你.jks文件的名称 可修改的

2.在Android目录下创建key.properties :

key.properties文件中需要输入以下内容:

storePassword=<生成keystore时设置的密码>
keyPassword=<生成keystore时设置的密码>
keyAlias=<生成keystore时的别名>
storeFile=<生成文件的key.jks的文件路径>
图一

3.app的build.gradle中配置:

添加配置1(如图二)

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
图二

重要配置(图三替换图四)

注意: signingConfigs必须在buildTypes

  signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            shrinkResources false
            signingConfig signingConfigs.release
        }
    }
图三

图四

4.执行flutter build apk :

flutter build apk
flutter build apk --release (推荐)

参考一
参考二
参考三

打包报错1:
android打包 提示checkreleasebuilds false

解决办法,在build.gradle里面的buildTypes同级添加如下代码,放在android下面
   lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

打包报错2:(signingConfigsbuildTypes顺序错误 如图六)

图五

muxiaosi:device_repair muxiaosi$ flutter build apk --release

Building without sound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety


FAILURE: Build failed with an exception.

* Where:
Build file '/Users/muxiaosi/Desktop/幕思项目/设备返修/device_repair/android/app/build.gradle' line: 61

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 712ms
Running Gradle task 'assembleRelease'...                         1,391ms
Gradle task assembleRelease failed with exit code 1
图六

打包报错3:
安装包无法安装 使用真机跑 完整报错应该类似下面这样:

Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]

这个是用 Android 12 SDK 打包导致的,是12的新特性,用来标记当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动。
如果它写在service中并且为false则表示则该服务不能够跨进程使用。
所以总体来说它的主要作用是:是否支持其它应用调用当前组件。

如图新增 android:exported="true" 即可


二.iOS打包流程

1.申请开发者账号

参考

2.创建APP id 及设置bundle id

参考

3.配置Xcode 苹果官网创建应用

参考

4.构建ipa包上传

image.png

导出包

image.png

image.png

第一次方式直接点击Next 等待上传成功就好
第二种方式直接点击Next 最终会的到ipa包 通过下图软件上传

image.png

你可能感兴趣的:(Flutter-安卓/iOS打包流程)