如何在不进入Android和iOS设置的情况下设置Flutter应用的版本名称和版本代码?
我在pubspec.yaml中拥有
version: 2.0.0
但是我看不到内部编号的地方。
答案 0 :(得分:9)
您可以在 pubspec.yaml 中的同一位置更新版本名称和版本代码。只需用+
符号将它们分开。例如:
version: 2.0.0+8
这是
2.0.0
8
在新项目的文档中对此进行了描述(但是,如果您正在处理旧项目,则可能已将其删除):
以下内容定义了应用程序的版本和内部版本号。 版本号是由点分隔的三个数字,例如1.2.43 然后是可选的内部版本号,并用+分隔。 版本和构建器编号都可能会被覆盖 通过分别指定--build-name和--build-number进行构建。 在semver.org上了解有关版本控制的更多信息。
version: 1.0.0+1
默认情况下,Flutter项目设置为在构建项目时根据pubspec.yaml中的version
设置自动更新Android和iOS设置。
另请参见:
答案 1 :(得分:6)
感谢用户abion47从文章Versioning with Flutter中找到并总结了以下答案。
默认情况下,在构建项目时,Flutter项目被设置为根据pubspec.yaml中的版本设置自动更新Android和iOS设置。但是,如果此后您已覆盖这些设置,则可以通过执行以下操作重新启用该行为:
打开ios / Runner / Info.plist文件。将CFBundleVersion的值设置为$(FLUTTER_BUILD_NUMBER),将CFBundleShortVersionString的值设置为$(FLUTTER_BUILD_NAME)。该文件的XML应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
...
</dict>
...
打开android/app/build.gradle
文件。确保正确加载文件顶部的Flutter属性:
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
throw new GradleException("versionCode not found. Define flutter.versionCode in the local.properties file.")
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
throw new GradleException("versionName not found. Define flutter.versionName in the local.properties file.")
}
然后设置android.defaultConfig
部分,以使versionName
为flutterVersionName
,而versionCode
为flutterVersionCode.toInteger()
:
android {
...
defaultConfig {
...
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
}
答案 2 :(得分:2)
在Android中,内部版本号用作versionName,而内部版本号用作versionCode。 在https://developer.android.com/studio/publish/versioning上了解有关Android版本的更多信息 在iOS中,内部版本名称用作CFBundleShortVersionString,而内部版本编号用作CFBundleVersion。 阅读有关iOS版本的更多信息,网址为 https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
您可以在pubsec.yaml中获得以上信息
您将在android / app / build.gradle中找到versionCode或内部版本号(对于android)。
defaultConfig {
applicationId "com.fabio.resturanto"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
您的local.properties文件中具有flutterVersionCode和flutterVersionName。这特定于Android版本
可以从pubspec.ymal设置两个iOS / Android版本
version: 1.2.0+1
此处1.2.0是版本名称,而+1是版本代码。 此处的更改(pubspec.ymal)将同时反映Android和iOS版本名称和版本代码。
答案 3 :(得分:2)
更新应用的版本号
该应用的默认版本号为1.0.0
。要对其进行更新,请导航至pubspec.yaml
文件并更新以下行:
version: 1.0.0+1
版本号是由点号分隔的三个数字,例如上例中的1.0.0
,后跟可选的内部版本号,例如上述示例中的1,并以+
分隔。
可以分别通过指定--build-name
和--build-number
在Flutter的版本中覆盖版本和内部版本号。
在Android中,build-name
用作versionName
,而build-number
则用作versionCode
。有关更多信息,请参阅Android文档中的Version your app。
更新pubspec文件中的版本号后,从项目顶部运行flutter pub get
,或使用IDE中的``Pub获取''按钮。这将更新versionName
文件中的versionCode
和local.properties
,随后在重建Flutter应用程序时会在build.gradle
文件中对其进行更新。
文档:https://flutter.dev/docs/deployment/android#updating-the-apps-version-number
答案 4 :(得分:1)
对我有用的东西
versionname
和versioncode
。flutter pub get
。local.properties
中是否有更新的flutter.versionName
flutter.versionCode
文件位于gradle文件夹中。