flutter - 升级 Flutter 项目 - 复制原生文件?
问题描述
升级 Flutter(flutter upgrade) 后有时会出现错误,需要新建一个干净的项目。
是否有任何应复制到新项目的本机文件列表(如插件中的类)?
解决方案
确切地!!
我已经面对这个问题有一段时间了(因为我是早期采用者),我想知道人们是如何管理这些颤振升级的。有一天你升级了颤振,你的应用程序不再构建。
从一开始我就创建了一个脚本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
那么,你仍然需要:
- 和条目
ios/Runner/Info.plist
的更新。CFBundleName
CFBundleLocalizations
android/app/src/main/AndroidManifest.xml
用你的package
和更新android:label
。- 更新
android/app/src/main/com/example/prokect/MainActivity.java
或android/app/src/main/kotlin/com/example/project/MainActivity.kt
使用您的package
和调整文件夹名称 (/com/example
->/com/mycompany
) - 更新
android/app/build.gradle
:applicationId
随您的包裹而改变 - 更新
android/app/build.gradle
:更改为您一直在使用的相同signingConfig
的signingConfigs
- 更新
android/app/build.gradle
:apply plugin: 'com.google.gms.google-services'
如果您使用的是 firebase,请添加 - 更新:如果您使用的是 firebase,请
android/build.gradle
添加 google-servicesclasspath
dependencies
- 添加
GoogleService-info.plist
到 iOS 项目。运行open -a Xcode ./ios
并将这个文件从 Finder 拖到 Xcode 的 Runner 文件夹中,以便 Xcode 识别它。 - 更新
ios/Runner.xcodeproj/project.pbxproj
:搜索 PRODUCT_BUNDLE_IDENTIFIER 并使用您的包名称进行调整 - 更新
ios/Runner.xcodeproj/project.pbxproj
:搜索 ORGANIZATIONNAME 并使用您的包名称进行调整 - 更正以下文件中的包:
- android/app/src/profile/AndroiManifest.xml
- android/app/src/main/AndroiManifest.xml
- android/app/src/debug/AndroiManifest.xml
- 更新
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 步!:)
推荐阅读
- xamarin.forms - Xamarin.Forms SecureStorage 插件不起作用
- c# - 为什么移动这条线会导致死锁?
- html - 如何在 delphi intraweb 中与 html 文件进行交互?
- authentication - 执行多个故障排除步骤后无法登录到 Tomcat 8 管理器
- blockchain - Ropsten 以太坊不显示交易信息
- java - Spring Boot - 仅允许经过身份验证的用户访问资源
- windows - 在 Windows 上构建 Docker 映像:入口点脚本“没有这样的文件或目录”
- vim - ncurses 库在 vim 构建期间不可用
- iot - thingsboard 小部件图表无法显示超过 6-7 小时的数据
- python - Python - C 编译错误 - gcc 失败