Flutter(三)| 第一个APP应用
安装好环境之后,我们就可以开始创建APP应用了。这里我们用一个随机密码的APP做例子。
flutter create命令
使用flutter命令来创建新的工程:
flutter create --org=com.wqh -i objc -a java random_app
–org 指定包名,这里的完整包名就是com.wqh.random_app。
–i 指定ios的语言,默认是swift,这里用objc。
–a 指定java的语言,默认是kotlin,这里用java。
random_app 就是项目的名字。
创建成功之后,可以用VSCode打开项目,连上手机,然后打开调试模式,在VSCode终端执行命令:
flutter run
项目结构
├─android
│ ├─app
│ │ └─src
│ │ ├─debug
│ │ ├─main
│ │ │ ├─java
│ │ │ │ ├─com
│ │ │ │ │ └─wqh
│ │ │ │ │ └─random_app
│ │ │ │ └─io
│ │ │ │ └─flutter
│ │ │ │ └─plugins
│ │ │ └─res
│ │ │ ├─drawable
│ │ │ ├─drawable-v21
│ │ │ ├─mipmap-hdpi
│ │ │ ├─mipmap-mdpi
│ │ │ ├─mipmap-xhdpi
│ │ │ ├─mipmap-xxhdpi
│ │ │ ├─mipmap-xxxhdpi
│ │ │ ├─values
│ │ │ └─values-night
│ │ └─profile
│ └─gradle
│ └─wrapper
├─ios
│ ├─Flutter
│ ├─Runner
│ │ ├─Assets.xcassets
│ │ │ ├─AppIcon.appiconset
│ │ │ └─LaunchImage.imageset
│ │ └─Base.lproj
│ ├─Runner.xcodeproj
│ │ ├─project.xcworkspace
│ │ │ └─xcshareddata
│ │ └─xcshareddata
│ │ └─xcschemes
│ └─Runner.xcworkspace
│ └─xcshareddata
├─lib
├─test
└─web
└─icons
android 对应安卓系统。
ios 对应苹果系统。
web 对应web项目。
lib 是项目主要代码目录。
test 测试目录。
zip END header not found
在执行flutter run的时候有可能出现“zip END header not found”的错误,这大概率是由于gradlew版本引起的问题。
可以进入到FlutterDemo/android,执行命令:
./gradlew --version
命令会自动下载gradle-6.7-all版本,然后进入目录删掉gradle-5.6.2-all的老版本:
C:\Users\admin\gradle\wrapper\dists
有时候因为网络问题会报异常 Exception in thread “main” java.net.SocketException
可以把gradle提前下载好,放到目录下面
链接: https://pan.baidu.com/s/1udb9uoWqRImb4bSgS81h6Q
提取码:3fzr
热重载
热重载功能(hot reload)支持应用程序在运行状态下重载代码而无需重新启动应用程序或者丢失程序运行状态。修改一下代码,然后告诉IDE或者命令行工具需要热重载,然后看一下模拟器或者设备上应用的变化。
- 打开lib/mian.dart
- 修改字符串’You have pushed the button this many times:’,改为’点击按钮的次数’
- 保存修改
- 在VSCode的终端输入r
Flutter run key commands. r Hot reload. 🔥🔥🔥 R Hot restart. h Repeat this help message. d Detach (terminate "flutter run" but leave application running). c Clear the screen q Quit (terminate the application on the device). An Observatory debugger and profiler on NEM AL10 is available at: http://127.0.0.1:34169/0DHyJJVVdw0=/ Performing hot reload… Reloaded 1 of 529 libraries in 2,761ms.
会发现修改后的字符串几乎马上出现在正在运行的应用程序上。
构建模式
在Debug模式下,app 可以被安装在物理设备、仿真器或者模拟器上进行调试。flutter run的默认模式。
flutter run --debug
在Release模式下,可以最大的优化以及最小的占用空间,跑起来比Debug流畅很多。主要用来发布app , release 模式是不支持模拟器或者仿真器的。
flutter run --release
在profile模式下,一些调试能力是被保留的—足够分析你的 app 性能。在仿真器和模拟器上,Profile 模式是不可用的,因为他们的行为不能代表真实的性能。 profile 模式和 release 类似,但有以下不同:
- 一些服务扩展是启用的。例如,支持 performance overlay。
- Tracing 是启用的,一些调试工具,比如开发者工具可以连接到进程里。
flutter run --profile
在下一节中,我们将开始写随机程序?