VSCode_常用Flutter终端命令和打包

[目录]

  • 项目运行和调试
  • 打包
      1. Android 打包
      1. iOS ipa 打包

一、项目运行和调试

flutter pub get 更新pub
flutter pub upgrade 更新第三方依赖
flutter pub outdated 查询展示依赖包可更新的版本信息

flutter --version 查看 Flutter 版本
dart --version 查看 Dart 版本
flutter channel 查看当前渠道
flutter upgrade Flutter升级

flutter clean 清理缓存
flutter config 清理证书
flutter config clear-ios-signing-cert
flutter doctor
flutter doctor -v
flutter run 运行项目并显示连接的设备
flutter devices 列出所有连接的设备
flutter run -d 'iPhone Xʀ' 运行指定设备
flutter run -d all 运行在所有可用设备上
flutter emulators 查看可用模拟器
flutter emulators --launch apple_ios_simulator 启动iOS 模拟器-只有启动模拟器才可以运行
flutter emulators --launch Nexus_5X_API_27 启动Android 模拟器-只有启动模拟器才可以运行

flutter logs 查看日志
flutter screenshot 截图

$ r 热更新直接刷新
$ R 热更新重启刷新
$ c Clear the screen
$ q 终止运行

断点调试
  • 选中需要设置代码断点的那一行,在它的左侧点击一下会出现一个小红点;
  • 点击"调试"图标或者调用Run -> Debug即可
清除Flutter 缓存文件
清除该目录下文件:
flutter/bin/cache/lockfile

二、打包

默认情况下,Flutter构建应用程序的debug版本。
当您准备好为Android准备release版时,例如要发布到应用商店,请按照此页面上的步骤操作。

1. Android 打包

flutter build apk
flutter build apk --no-sound-null-safety

步骤:

1. 检查AndroidManifest.xml文件(项目名字/android/app/src/main/中的AndroidManifest.xml文件),并验证这些值是否正确,特别是:

  • application: 这是应用的名称。
  • uses-permission: 如果您的应用程序代码不需要Internet访问,请删除android.permission.INTERNET权限。标准模板包含此标记是为了启用Flutter工具和正在运行的应用程序之间的通信。

2. 查看build.gradle文件中的defaultConfig部分(项目名字/android/app/中的build.gradle文件),并验证这些值是否正确,特别是:

  • defaultConfig:
    • applicationId: 指定始终唯一的 (Application Id)appid
    • versionCode & versionName: 指定应用程序版本号和版本号字符串。有关详细信息,请参考版本文档
    • minSdkVersion & targetSdkVersion: 指定最低的API级别以及应用程序设计运行的API级别。有关详细信息,请参阅版本文档中的API级别部分。

3. 添加启动图标。
首先在(项目名字/android/app/src/main/res/的目录中,将图标文件进行替换),


然后在AndroidManifest.xml文件中(项目名字/android/app/src/main/中的AndroidManifest.xml文件),将application标记的android:icon属性更新为引用上一步中的图标。运行验证图标是否已被替换。

android:icon="@mipmap/ic_launcher"

4. app签名。首先第一步是创建 keystore签名文件。
注意:保持文件私密; 不要将它加入到公共源代码控制中。)

如果您有现成的keystore,请跳至下一步。如果没有,请通过在终端运行以下命令来创建一个:
keytool -genkey -v -keystore /Users/flutter_key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyAlias
注:
/Users/flutter_key.jks:为路径和文件名,执行命令后会在Users目录下生成名为flutter_key.jks的签名文件,keyAlias:为签名文件的别名,根据自己喜好设置。
然后,终端的执行过程是这样的:

5. 引用keystore到应用程序中。
注意:保持文件私密; 不要将它加入到公共源代码控制中。)
android目录下新建key.properties文件,其中包含对密钥库的引用,目录结构如下图:


文件中的内容如下:

storePassword=123456(第一步中输入的密钥库口令,也就是签名文件的密码)
keyPassword=123456(第一步中输入的密钥库口令,也就是签名文件的密码)
keyAlias= keyAlias(为第一步中输入的签名文件的别名)
storeFile=/Users/flutter_demo1/android/app/key/zhou.jks(为签名文件的绝对路径,记得带上文件名)

6. 在gradle中配置签名(项目名字/android/app/中的build.gradle文件)

替换:

android {

为:

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

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

替换:

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 file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

现在,您的应用的release版本将自动进行签名。

上面还有一种替换方法:

替换:

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 {
    debug {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        signingConfig signingConfigs.release
    } 
}

7. 开启混淆
默认情况下 flutter 不会开启 Android 的混淆。
如果使用了第三方 Java 或 Android 库,也许你想减小 apk 文件的大小或者防止代码被逆向破解。

9. 除了上面几处更改之外,下面几处看情况更改
lintOptions {
    checkReleaseBuilds false
    abortOnError false
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:multidex:1.0.3'
}

2. iOS ipa 打包

方法一:

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

方法二:
flutter build ios --debug
flutter build ios --release

编译目录:

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

然后我们要创建一个名为Payload的文件夹,注意名字不能错,然后把Runner.app粘贴到Payload文件下,然后对Payload压缩成.zip:

然后将Payload.zip重命名为Payload.ipa:

方法三:

1. 注册一个 Bundle ID。
2. 在iTunes Connect上创建应用程序记录。
3. 查看Xcode项目设置。

在 Identity 部分:

  • Display Name: app的名称
  • Bundle Identifier: App的 Bundle ID.

在 Signing 部分:

  • Automatically manage signing: Xcode是否应该自动管理应用程序签名和生成。默认设置为true,对大多数应用程序来说应该足够了。对于更复杂的场景,请参阅Code Signing Guide。
  • Team: 选择与您注册的Apple Developer帐户关联的团队。如果需要,请选择Add Account…,然后更新此设置

在 Deployment Info 部分:

  • Deployment Target: 您的应用将支持的最低iOS版本。Flutter支持iOS 8.0及更高版本。如果您的应用程序包含使用iOS 8中不可用的API的Objective-C或Swift代码,请适当更新此设置。

4. 添加应用程序图标。

  1. 查看iOS App Icon 指南.
  2. 使用Xcode打开Runner.xcworkspace选择Assets.xcassets。使用您自己的应用程序图标更换占位图标
  3. 运行flutter run, 验证应用图标已被替换

5. 创建一个构建档案。
在开发过程中,您一直在构建、调试、测试 debug版本。当您准备将应用发布到App Store或TestFlight上时,您需要准备 release版本:

在命令行上,在您的应用程序目录中执行以下步骤:

  1. 运行flutter build ios以创建 release版本(flutter build默认为--release)
  2. 为确保 Xcode刷新 release模式配置,关闭并重新打开Runner.xcworkspace。对于Xcode 8.3和更高版本,这一步不是必需的
  1. 在Xcode工程中设置版本号和构建号
  2. 选择 Product > Archive 以生成构建档案,并Upload to App Store…

你可能感兴趣的:(VSCode_常用Flutter终端命令和打包)