我在flutter项目中使用了一些不再需要的软件包,即wilddog_auth
和wilddog_sync
,我可以从pubspec.yaml
文件和我的dart文件中删除导入(也就是删除import 'package:wilddog_sync/wilddog_sync.dart'
等),并在MainActivity.java和Xcode项目中删除导入,但我不能清除flutter安装的未使用的文件,cocoapod和gradle。现在flutter中有没有一个统一的命令,我可以一次删除所有未使用的软件包?
我很确定使用flutter clean
只会删除build文件夹,而在从pubspec.yaml
删除包后使用flutter packages get
也不会删除cocoapod
或gradle
中的包。
例如,在flutter clean
和flutter 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`.
9条答案
按热度按时间am46iovg1#
有一个直观的方法。安装this包
然后运行
flutter pub run dependency_validator
它将显示所有关于安装的包的详细信息。示例:=〉这些包被固定在pubspec.yaml中:
这些包在lib/中使用,但不是依赖项:
以下软件包包含可执行文件,假定将使用它们:
这些包可能未使用,或者您可能正在使用这些包中的资产:
yhqotfr82#
删除flutter SDK目录中 .pub-cache 的托管文件夹
删除项目根目录中的 .packages 文件
获取项目的包
在Android Studio中打开项目
好了。
k3bvogb13#
有时候,可能有一些包在项目中没有使用,但您在开发阶段安装了。要找出这些包,首先转到每个dart文件并删除未使用的导入,然后转到pubspec.yaml,逐个注解包并保存项目,然后刷新应用程序(不热重新加载).如果我们在项目中使用的软件包,那么它会给你一个错误.在所有的软件包上重复这些步骤后,你将能够从你的pubspec中删除所有不需要的软件包.
现在,删除pubspec.lock文件,并再次运行pubget。您的项目现在将只拥有所需的包,这可能是可实现的最小大小。
jogvjijk4#
有一个明显的方法很容易被忽视或认为是不可行的。
如果使用IntelliJ,只需执行“在文件中查找”(PC上的SHIFT+CTRL+F,Mac上的SHIFT+CMD+F),选择“目录”并选择项目的库文件夹。
然后浏览插件列表,依次搜索每个插件的名称。
我花了不到一分钟的时间来消除8个未使用的插件使用这种方法。
dgjrabp25#
您可以使用这三个步骤来清除此问题
1.“扑干净”
1.删除pubspec.yaml中不需要的依赖项
1.删除pubspec.lock
重新加载项目并再次执行'pub get'并运行iOS/Android项目
yptwkmov6#
此行为似乎是一个错误。您可以在此处跟踪它https://github.com/flutter/flutter/issues/65718
j2cgzkjk7#
最好的办法是
如果这不起作用,只需创建一个新项目,将旧代码复制到新项目中,在运行pub get之前,您可以在这里仅添加所需的依赖项。
ijnw1ujt8#
您可以通过键入terminal
dart pub remove <packagename>
来删除示例:要删除
flutter_svg:^0.22.0
,请键入dart pub remove flutter_svg
有关更多信息,请查看https://dart.dev/tools/pub/cmd/pub-remove
gzjq41n49#
Flutter通过运行以下命令来解决这个问题:
首先,我尝试删除***webview_flutter:4.1.0***from pubspec.yaml 并运行
但是Flutter在 .pub-cache/hosted 目录中保存了流行包的缓存版本,因此您必须手动删除缓存的包,或者最好运行第一个命令。
使用Flutter:3.7.10和Dart:2.19.6