返回
揭秘Flutter项目创建背后的秘密
iOS
2022-11-04 08:04:28
Flutter项目创建的秘密
Flutter项目创建是一个复杂的过程,涉及到一系列步骤,包括命令行输入、构建工具调用、项目结构生成等。本文将带你从源代码的角度,逐层剖析Flutter项目创建的奥秘,让你对Flutter开发有更深入的理解。
1. Flutter项目的起点:命令行输入
一切始于命令行。当你在终端输入flutter create
命令时,Flutter的构建工具flutter_tools
就会被激活,它将负责整个项目的创建过程。
flutter create my_app
2. 构建工具的介入:项目结构的生成
flutter_tools
收到命令后,首先会根据你指定的项目名称创建一个新的项目目录,目录中包含了Flutter项目的基本结构,包括lib
目录、pubspec.yaml
文件和test
目录等。
├── android
│ ├── app
│ │ ├── build.gradle
│ │ ├── MainActivity.java
│ │ ├── proguard-rules.pro
│ │ ├── res
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── src
│ │ │ ├── main
│ │ │ │ └── MainActivity.java
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ ├── gradle-wrapper.properties
│ │ └── gradlew
│ ├── ios
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.m
│ │ ├── Assets.xcassets
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Runner.app
│ │ ├── Runner.entitlements
│ │ ├── Runner.plist
│ │ ├── Runner.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── xcuserdata
│ │ ├── Tests
│ │ │ ├── Info.plist
│ │ │ ├── RunnerTests.m
│ │ │ ├── RunnerUITests.m
│ │ │ └── Support
│ │ │ ├── Assets.xcassets
│ │ │ ├── Info.plist
│ │ │ ├── Main.storyboard
│ │ │ └── RunnerUITests.xctest
│ │ ├── UI Tests
│ │ │ ├── Info.plist
│ │ │ ├── RunnerUITests.m
│ │ │ └── Support
│ │ │ ├── Assets.xcassets
│ │ │ ├── Info.plist
│ │ │ ├── Main.storyboard
│ │ │ └── RunnerUITests.xctest
│ │ ├── xcconfig
│ │ └── YourAppName.xcodeproj
│ └── local.properties
├── build
│ ├── assets
│ │ ├── assets
│ │ │ ├── fonts
│ │ │ │ └── Montserrat-Regular.ttf
│ │ │ └── images
│ │ │ └── background.png
│ │ ├── fonts
│ │ │ └── Montserrat-Regular.ttf
│ │ ├── fonts.json
│ │ └── images
│ │ └── background.png
│ ├── app.dill
│ ├── debug
│ │ ├── app.android.debug.ddms
│ │ ├── app.android.debug.express
│ │ ├── app.android.debug.hprof
│ │ ├── app.android.debug.json
│ │ ├── app.android.debug.log
│ │ ├── app.android.debug.pdb
│ │ ├── app.android.debug.png
│ │ ├── app.android.debug.symbols
│ │ ├── app.android.debug.trace
│ │ ├── app.android.debug.wsp
│ │ ├── app.ios.debug.app.dsym
│ │ ├── app.ios.debug.app.env
│ │ ├── app.ios.debug.dylib
│ │ ├── app.ios.debug.framework
│ │ ├── app.ios.debug.json
│ │ ├── app.ios.debug.log
│ │ ├── app.ios.debug.pdb
│ │ ├── app.ios.debug.profile
│ │ ├── app.ios.debug.symbols
│ │ ├── app.ios.debug.trace
│ │ └── app.ios.debug.xcodeproj
│ ├── ios
│ │ ├── Debug.xcconfig
│ │ ├── Debug.xcprofile
│ │ ├── Flutter.framework
│ │ ├── Flutter.podspec
│ │ ├── Pods
│ │ ├── Podfile
│ │ ├── Podfile.lock
│ │ └── Release.xcconfig
│ ├── symbols
│ │ ├── app.android.debug.pdb
│ │ ├── app.android.release.pdb
│ │ ├── app.ios.debug.pdb
│ │ ├── app.ios.release.pdb
│ │ ├── flutter.dart.core.pdb
│ │ ├── flutter.dart.isolate.pdb
│ │ ├── flutter.dart.ui.pdb
│ │ └── vm_service_io.dart.pdb
│ └── web
│ └── index.html
├── example
├── ios
│ ├── Podfile
│ ├── Pods
│ │ ├── Flutter
│ │ │ ├── Flutter
│ │ │ │ └── Flutter.framework
│ │ │ └── LICENSE.TXT
│ │ ├── Firebase
│ │ │ ├── Firebase
│ │ │ │ ├── FirebaseAnalytics
│ │ │ │ │ └── FirebaseAnalytics.framework
│ │ │ │ │ └── GoogleUtilities/GULAppDelegateSwizzler.m
│ │ │ │ ├── FirebaseAnalyticsUI
│ │ │ │ │ └── FirebaseAnalyticsUI.framework
│ │ │ │ │ └── FirebaseAnalyticsUI/FirebaseAnalyticsUI
│ │ │ │ └── FirebaseAnalyticsUI/FirebaseAnalyticsUI.h
│ │ │ ├── FirebaseAnalyticsUI/FirebaseAnalyticsUI.h
│ │ │ ├── FirebaseAnalyticsUI/FirebaseAnalyticsUI.m
│ │ │ └── FirebaseFirestore
│ │ │ ├── FirebaseFirestore
│ │ │ │ └── FirebaseFirestore.framework
│ │ │ │ └── FirebaseFirestore/FSTFirestore.h
│ │ │ ├── FirebaseFirestoreUI
│ │ │ │ └── FirebaseFirestoreUI.framework
│ │ │ │ └── FirebaseFirestoreUI/FirebaseFirestoreUI
│ │ │ └── FirebaseFirestoreUI/FirebaseFirestoreUI.h
│ │ │ └── FirebaseFirestoreUI/FirebaseFirestoreUI.m
│ │ │ └── LICENSE
│ │ │ └── README.TXT
│ │ │ └── iosched-version.json
│ │ │ └── runner.modulemap
│ │ │ └── tests
│ │ │ └── xctestplan
│ │ │ ├── flutter_performance_tests
│ │ │ └── info.plist
│ │ │ └── xctestproject
│ │ │ ├──】