首页 > 解决方案 > 升级 Flutter 项目 - 复制原生文件?

问题描述

升级 Flutter(flutter upgrade) 后有时会出现错误,需要新建一个干净的项目。

是否有任何应复制到新项目的本机文件列表(如插件中的类)?

标签: flutter

解决方案


确切地!!

我已经面对这个问题有一段时间了(因为我是早期采用者),我想知道人们是如何管理这些颤振升级的。有一天你升级了颤振,你的应用程序不再构建。

从一开始我就创建了一个脚本after_flutter_upgrade.sh,我将它保存在项目的主文件夹中,并在发生这种情况时运行它。每次迭代都需要一些额外的步骤,我一直在维护脚本。因为它非常依赖于项目,我认为它不会帮助将它发布在这里。

这样做感觉非常错误,但它确实有效,所以我原谅自己。

脚本所做的是转到父文件夹并将项目的文件夹重命名为old_<myproject>. 然后,它运行flutter create <myproject>。所以我保留原来old_<myproject>的和最近创建的空白<myproject>

然后脚本开始从旧的复制到新的:

/lib
/test
/assets      # I keep an assets folder for logos, images and such
/.vscode     # If you use it
/.git        # Afterall I want to log everything which was changed

/.gitignore
/android/.gitignore
/analysis_options.yaml   # if you defined it
/pubspec.yaml
/README.md

/android/key.properties    # if you're using it that way

# icons
/android/app/src/main/res
/ios/Runner/Assets.xcassets/AppIcon.appiconset

# These two if you're using firebase
/android/app/google-services.json   
/ios/Runner/GoogleService-Info.plist

那么,你仍然需要:

  1. 和条目ios/Runner/Info.plist的更新。CFBundleNameCFBundleLocalizations
  2. android/app/src/main/AndroidManifest.xml用你的package和更新android:label
  3. 更新android/app/src/main/com/example/prokect/MainActivity.javaandroid/app/src/main/kotlin/com/example/project/MainActivity.kt使用您的package和调整文件夹名称 ( /com/example-> /com/mycompany)
  4. 更新android/app/build.gradleapplicationId随您的包裹而改变
  5. 更新android/app/build.gradle:更改为您一直在使用的相同signingConfigsigningConfigs
  6. 更新android/app/build.gradleapply plugin: 'com.google.gms.google-services'如果您使用的是 firebase,请添加
  7. 更新:如果您使用的是 firebase,请android/build.gradle添加 google-servicesclasspathdependencies
  8. 添加GoogleService-info.plist到 iOS 项目。运行open -a Xcode ./ios并将这个文件从 Finder 拖到 Xcode 的 Runner 文件夹中,以便 Xcode 识别它。
  9. 更新ios/Runner.xcodeproj/project.pbxproj:搜索 PRODUCT_BUNDLE_IDENTIFIER 并使用您的包名称进行调整
  10. 更新ios/Runner.xcodeproj/project.pbxproj:搜索 ORGANIZATIONNAME 并使用您的包名称进行调整
  11. 更正以下文件中的包:
  • android/app/src/profile/AndroiManifest.xml
  • android/app/src/main/AndroiManifest.xml
  • android/app/src/debug/AndroiManifest.xml
  1. 更新android/app/src/main/res/values/styles.xml:添加新样式:
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
  <item name="android:windowBackground">@android:color/white</item>
</style>

至少对我来说,这是可行的。希望它可以为某人节省一些时间。

当然,在您的项目中可能会有额外的步骤。

当我开始编写脚本时,只有 5 步,现在是 12 步,到 2021 年可能会达到 20 步!:)


推荐阅读