当一个项目从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
评论区