返回

揭秘Flutter项目创建背后的秘密

iOS

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
│   │   │               ├──】