我使用了一些在flutter项目中不再需要的软件包,即wilddog_auth
和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
不会从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 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`.
答案 0 :(得分:1)
删除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 中打开项目
完成。
答案 1 :(得分:0)
此行为似乎是一个错误。您可以在这里https://github.com/flutter/flutter/issues/65718
进行跟踪答案 2 :(得分:0)
有时候,项目中可能没有使用某些软件包,但是您在开发阶段已安装了某些软件包。要找出这些内容,请首先转到每个dart文件并删除未使用的导入,然后转到pubspec.yaml并逐个注释软件包并保存项目。然后刷新应用程序(不重新加载)。如果我们在项目中使用了该软件包,那么它将抛出一个错误。在所有软件包上重复上述步骤后,您将能够从pubspec中删除所有不需要的软件包。
现在,删除pubspec.lock文件,然后再次运行pub get。现在,您的项目将仅具有所需的软件包,而这可能是可以达到的最小大小。
答案 3 :(得分:0)
您可以使用这三个步骤来解决此问题
重新加载项目并再次执行“pub get”并运行 iOS/Android 项目
答案 4 :(得分:0)
最好的方法是
flutter clean
如果这不起作用,只需创建一个新项目,将您的旧代码复制到新项目中,在这里您可以在运行 pub get 之前仅添加您想要的依赖项。
答案 5 :(得分:0)
有一种直观的方法。 安装 this 包
dev_dependencies:
dependency_validator: ^x.x.x
然后运行 flutter pub run dependency_validator
它将显示有关已安装软件包的所有详细信息。
示例:=>
这些包固定在 pubspec.yaml 中:
这些包在 lib/ 中使用,但不是依赖项:
以下包包含可执行文件,假定使用它们:
这些包可能未使用,或者您可能正在使用这些包中的资产: