21

我在我的颤振项目中使用了一些我不再需要的包,即wilddog_authand wilddog_sync,我可以从pubspec.yaml文件和我的 dart 文件中删除导入(又名删除import 'package:wilddog_sync/wilddog_sync.dart'等)并删除 MainActivity.java 以及 Xcode 项目中的导入但是我无法清除 Flutter、cocoapod 和 gradle 安装的未使用文件。现在flutter中有一个统一的命令,我可以一次删除所有未使用的包吗?

我很确定flutter clean仅使用删除构建文件夹并在从中删除软件包flutter packages get后使用pubspec.yaml不会从中删除软件包。cocoapodgradle

例如,在flutter cleanflutter packages get重建项目之后:

Launching lib/main.dart on Android SDK built for x86 64 in debug mode...
Initializing gradle...
Resolving dependencies...
Running 'gradlew assembleDebug'...
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk...
I/FlutterActivityDelegate(11331): onResume setting current activity to this
I/Choreographer(11331): Skipped 107 frames!  The application may be doing too much work on its main thread.
D/EGL_emulation(11331): eglMakeCurrent: 0x79f21b4dbec0: ver 2 0 (tinfo 0x79f219b4f160)
I/OpenGLRenderer(11331): Davey! duration=1903ms; Flags=1, IntendedVsync=7544454683637, Vsync=7546238016899, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=7546253803603, AnimationStart=7546253996603, PerformTraversalsStart=7546254171603, DrawStart=7546279222603, SyncQueued=7546288526603, SyncStart=7546295569603, IssueDrawCommandsStart=7546296644603, SwapBuffers=7546334455603, FrameCompleted=7546365204603, DequeueBufferDuration=2892000, QueueBufferDuration=199000, 
Syncing files to device Android SDK built for x86 64...
D/        (11331): HostConnection::get() New Host Connection established 0x79f219ab81e0, tid 11383
D/EGL_emulation(11331): eglMakeCurrent: 0x79f21b5e26e0: ver 2 0 (tinfo 0x79f219aa66c0)
W/IInputConnectionWrapper(11331): getCursorCapsMode on inactive InputConnection

可可足类 毕业典礼

然而所有的包文件仍然存在。

当然,我可以./ios/运行pods install以删除 pod:

pod install
Analyzing dependencies
Fetching podspec for `Flutter` from `.symlinks/flutter/ios`
Removing Wilddog
Removing WilddogCore
Removing WilddogSync
Downloading dependencies
Using Flutter (1.0.0)
Generating Pods project
Integrating client project
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

[!] Automatically assigning platform `ios` with version `8.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
4

7 回答 7

3

删除flutter SDK目录中.pub-cache的托管文件夹

cd path/to/flutter_sdk_directory

rm -rf .pub-cache/hosted

删除项目根目录下的.packages文件

 cd path/to/project_root_directory

 rm -rf .packages

获取项目的包

cd path/to/project_root_directory

flutter pub get

在 Android Studio 中打开项目

完毕。

于 2021-05-05T13:02:54.763 回答
2

您可以使用这三个步骤来清除此问题

  1. '扑干净'
  2. 删除 pubspec.yaml 中不需要的依赖项
  3. 删除 pubspec.lock

重新加载项目并再次执行 'pub get' 并运行 iOS/Android 项目

于 2021-01-30T18:28:50.523 回答
1

最好的方法是

flutter clean

如果这不起作用,只需创建一个新项目,将旧代码复制到新项目中,在这里您可以在运行 pub get 之前仅添加所需的依赖项。

于 2021-02-19T03:37:55.387 回答
1

有时可能有一些包没有在项目中使用,但您在开发阶段的某个时候已经安装了。要找出这些,首先转到每个 dart 文件并删除未使用的导入,然后转到 pubspec.yaml 并逐个注释包并保存项目。然后刷新应用程序(不是热重载)。如果我们在项目中使用的包那么它会抛出一个错误。在对所有包重复这些步骤后,您将能够从 pubspec 中删除所有不需要的包。

现在,删除 pubspec.lock 文件,然后再次运行 pub get。您的项目现在将只有所需的包,这可能是可实现的最小尺寸。

在此处输入图像描述

于 2020-10-21T07:28:23.800 回答
0

有一种直观的方法。安装这个

dev_dependencies:
  dependency_validator: ^x.x.x

然后运行flutter pub run dependency_validator 它将显示有关已安装软件包的所有详细信息。示例:=>

这些包固定在 pubspec.yaml 中:

  • dependency_validator: null -- 这是一个直接引脚。
  • permission_handler: null -- 这是一个直接的 pin。
  • swipe_to: null -- 这是一个直接引脚。

这些包在 lib/ 中使用,但不是依赖项:

  • 连通性
  • 小路

以下软件包包含可执行文件,假定使用它们:

  • flutter_native_splash

这些包可能未使用,或者您可能正在使用这些包中的资产:

  • 库比蒂诺图标
  • firebase_analytics
  • http
  • 加载
  • 用苹果登录
于 2021-07-06T07:32:54.150 回答
0

您可以通过输入终端来删除 dart pub remove <packagename>

示例:要删除flutter_svg:^0.22.0,请键入dart pub remove flutter_svg

有关更多信息,请查看https://dart.dev/tools/pub/cmd/pub-remove

于 2021-09-03T03:25:40.087 回答
0

这种行为似乎是一个错误。你可以在这里跟踪它https://github.com/flutter/flutter/issues/65718

于 2020-09-18T15:53:22.707 回答