如何设置Flutter应用程序的版本名称和版本代码,而无需进入Android和iOS设置?
在我的pubspec.yaml中
version: 2.0.0
Run Code Online (Sandbox Code Playgroud)
但我看不到内部编号的地方。
Yus*_*Amr 21
对我来说我的版本是
version: 1.0.0+1
我把它改为
version: 1.2.0+1
然后在终端
flutter build appbundle --build-name=1.2.0+1 --build-number=2
Run Code Online (Sandbox Code Playgroud)
Sur*_*gch 20
感谢用户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>
...
Run Code Online (Sandbox Code Playgroud)
打开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.")
}
Run Code Online (Sandbox Code Playgroud)
然后设置该android.defaultConfig部分,即versionName是flutterVersionName和versionCode是flutterVersionCode.toInteger():
android {
...
defaultConfig {
...
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
}
Run Code Online (Sandbox Code Playgroud)
Sur*_*gch 19
您可以在pubspec.yaml中的同一位置更新版本名称和版本代码号。只需将它们与+标志分开即可。例如:
version: 2.0.0+8
Run Code Online (Sandbox Code Playgroud)
这意味着
2.0.08在新项目的文档中对此进行了描述(但是,如果您正在处理旧项目,则可能已将其删除):
以下内容定义了您的应用程序的版本和内部版本号。版本号是用点号分隔的三个数字,例如1.2.43,后跟一个可选的内部号,用+分隔。通过分别指定--build-name和--build-number,可以在flift构建中覆盖版本和构建器编号。在semver.org上了解有关版本控制的更多信息。
version: 1.0.0+1
默认情况下,Flutter项目被设置为version在构建项目时根据pubspec.yaml中的设置自动更新Android和iOS设置。
也可以看看:
Men*_*elG 12
对我来说,有效的是在文件中设置正确的版本pubspec.yaml ,然后运行:
flutter clean
Run Code Online (Sandbox Code Playgroud)
进而:
flutter pub get
Run Code Online (Sandbox Code Playgroud)
flutter clean确实有效。
您还应该运行:
pod install
Run Code Online (Sandbox Code Playgroud)
在你的/ios目录下
最后,您必须执行:
flutter run
Run Code Online (Sandbox Code Playgroud)
因为这不仅会运行您的应用程序,还会更新local.properties文件,一旦build.gradle您执行flutter run.
也可以看看:
versionname和versioncode。flutter pub get。local.properties是否有更新的flutter.versionName
flutter.versionCode文件。| 归档时间: |
|
| 查看次数: |
6731 次 |
| 最近记录: |