侧边栏壁纸
博主头像
大数互联博主等级

HI,你好

  • 累计撰写 58 篇文章
  • 累计创建 55 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

flutter开发笔记

大数互联
2024-09-14 / 0 评论 / 0 点赞 / 26 阅读 / 1,041 字

当一个项目从linux切换到windows环境,且编绎运行报错,可尝试如下操作

1:删除工程下的build与.dart_tool目录。
2:执行以下命令

flutter clean

在中国flutter下载相关sdk包很慢问题处理

设置环境变量

linux

在 terminal 中打开新窗口,准备运行脚本。
将 PUB_HOSTED_URL 设置为镜像站点。

export PUB_HOSTED_URL="https://pub.flutter-io.cn"

将 FLUTTER_STORAGE_BASE_URL 设置为镜像站点。

export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

windows

在 Powershell 中打开新窗口,准备运行脚本。
将 PUB_HOSTED_URL 设置为镜像站点。

C:> $env:PUB_HOSTED_URL="https://pub.flutter-io.cn"

将 FLUTTER_STORAGE_BASE_URL 设置为镜像站点。

C:> $env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

参考此地址的说明处理:https://docs.flutter.cn/community/china

工程从linux环境转到windows环境各种报错处理

1:尝试删除.dart_tool,build,windows目录
2:执行以下操作在现存的工程添加平台桌面支持
Add desktop support to an existing Flutter app

To add desktop support to an existing Flutter project, run the following command in a terminal from the root project directory:
flutter create --platforms=windows,macos,linux .

flutter doctor报android cmd-tool组件找不到处理

参考以下操作
The solution for me was opening Android Studio and going to SDK Manager, switch to the SDK Tools tab and check Android SDK Command-line Tools (latest).

Don’t forget to add to your PATH the tools and platform-tools folder that are inside your SDK.
可以尝先把sdk-tools中的全部取消选择,点击应用会删除取消的sdk,然后再选择需要的sdk,再点击应用安装,完后设置下面的的路径到path中,以下为ubuntu示例:

Ubuntu installation ~/.profile file:

export ANDROID_SDK=anddroid sdk路径
export PATH=$PATH:$ANDROID_SDK/platform-tools 
export PATH=$PATH:$ANDROID_SDK/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_SDK/build-tools/sdk版本号
export PATH=$PATH:$ANDROID_SDK/emulator/bin64

打包与打包后在真机启动闪退问题

现在 release 包闪退 的最大嫌疑就是 混淆 (R8/ProGuard)。
因为没有 proguard-rules.pro,所以 org.videolan 相关类可能被删掉或重命名,
VLC 的 so 库在初始化时就找不到 Java 类 → 启动秒闪退。

✅ 解决办法:手动添加 proguard-rules.pro

在你的项目目录创建文件:
android/app/proguard-rules.pro

写入以下内容(最小规则集,保证 VLC 能跑):

# 保留 VLC 所有类
-keep class org.videolan.** { *; }
-dontwarn org.videolan.**

# Flutter 平台通道、插件
-keep class io.flutter.** { *; }
-dontwarn io.flutter.**

✅ 修改 build.gradle.kts

在 android { buildTypes { release { … } } } 中,指定这个 proguard 文件:

buildTypes {
    release {
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(
            getDefaultProguardFile("proguard-android.txt"),
            "proguard-rules.pro"
        )
    }
}

🚀 验证步骤

重新执行:

flutter build apk --release

安装到真机:

adb install -r build/app/outputs/flutter-apk/app-release.apk

如果还闪退,马上用:

adb logcat | grep AndroidRuntime

延迟优化
经过上述步骤的测试,我们发现有延迟问题,推流端的延迟我们无法保证,因为往往推流的是监控设备。
于是我们先优化拉取的延迟问题。
我们可以将 VLC 的拉流缓存时长调低就可以极大缓解延迟问题。

_vlcPlayerController = VlcPlayerController.network(
        host,
        hwAcc: HwAcc.full,
        autoPlay: true,
        options: VlcPlayerOptions(
            advanced: VlcAdvancedOptions([
          VlcAdvancedOptions.liveCaching(100),
          VlcAdvancedOptions.networkCaching(100)
        ])));

打包压缩
通过flutter build apk后,我们发现安装包竟增加了 100+MB!这是不可接收的!

使用flutter build apk --analyze-size 分析我们发现在打包过程中 flutter 自动将所有 abi 打包进了 APK 包里。

于是我们可以用flutter build apk --release --split-per-abi --target-platform android-arm,android-arm64来指定目标平台。

针对打包后体积过大的问题,有人如下说道

VLC uses lots of native code. As a result, it has 18-30MB of native libraries per CPU architecture. While that will be compressed somewhat in the APK, a 57MB increase in APK is actually better than I would expect.

You either need to:

Live with it, or

Use splits or product flavors to indicate which subset of CPU architectures you are willing to support (the library itself supports arm64-v8a, armeabi-v7a, mips, x86, and x86_64), or

Do not use VLC
0

评论区