Flutter旧版本升级-> Android 配置、iOS配置

1------------android

android部分:

部分原文:原文链接:https://blog.csdn.net/weixin_73167149/article/details/149289805

概括

要构建适用于 Android 的 Flutter 应用,必须应用 Flutter 的 Gradle 插件。过去,这是通过 Gradle 的传统命令式应用脚本方法以命令式方式完成的。

Flutter 3.16 新增了使用 Gradle声明式 plugins {} 块(也称为插件 DSL)应用这些插件的支持,现在已成为推荐方法。从 Flutter 3.16 开始,flutter create使用插件 DSL 生成的项目将使用 Gradle 插件。使用 Flutter 3.16 之前版本创建的项目需要手动迁移。

以上是官网原话https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply,

基本上修改文件:

setting.gradle文件:大致如下

Dart 复制代码
pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0" // apply true
    id "com.android.application" version "{agpVersion}" apply false
    id "org.jetbrains.kotlin.android" version "{kotlinVersion}" apply false
}

include ":app"

android/build.gralde文件 大致如下

Dart 复制代码
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

android/app/build.gralde文件内容改动较多,请看原文:https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply,

配置上上面的文件,还有一个大问题:最大的兼容性问题通常来自于 Gradle 和插件版本不匹配,所以会导致android编译不通过。会有很多三方的namespace问题,这个问题简单的解决方案就是去对应的三方的路径下:举例

/Users/xxx/.pub-cache/hosted/pub.dev/wakelock-0.4.0/android/build.gradle

去这个里面加上namespace。

这个.pub-cache文件下的内容在flutter clean下是不会被销毁的。如果想一劳永逸,则建议要么换最新的三方,要么就是用三方置入的方式。

尽量不要一次性改动很多的三方,以免产生各方依赖及缓存问题。

2------------ios

iOS部分:相比gradle的升级很多问题来说,ios的相对少很多,更新的较多的三方只会有一个比较麻烦的问题就是

许久不升级,当flutter dart 还有各种三方的widght都升级时候,这个时候flutter pub get 没问题了, pod update / install都没问题了 但是运行到iPhone真机上的时候就会报错:各种三方的问题。如下

Framework 'flutter_image_compress' not found

这个时候去打开去新的Xcode里找到build setttings 搜索:Other Linker Flags 看到一堆引用的三方删除掉原来的链接引用即可。

相关推荐
千里马学框架1 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone1 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc1 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo1 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077001 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
茶底世界之下1 天前
为什么预览、录制、离线导出不能共享同一个背压策略?
ios·swift
AFinalStone1 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen1 天前
属性动画原理与高级动画实现
android·kotlin·canvas