flutter项目目录:

android: android平台相关代码

包含入口容器MainActivity和GeneratedPluginRegistrant 插件注册管理
res:资源 mainfest

ios:ios平台相关代码,

runner-Assets.Xcassets-AppIcon.appiconset:配置ios启动图标
runner-Assets.Xcassets-LaunchImage.imageset:ios启动闪屏资源配置

assets:asset是打包到程序安装包中的资源,可在运行时访问

lib:flutter代码相关,开发代码编写

.flutter-plugins:自动生成的引用插件的配置

.pubspec.yaml:这个是配置依赖项的文件,比如配置远程pub仓库的依赖库,或者指定本地资源(图片、字体、音频、视频等)。

一、创建工程

image.png

入口:
lib下 main.dart
那整个工程怎么运行的呢?见#3
具体的大概就是FlutterApplication执行 — MainActivity—FlutterActivityDelegate 委托代理—
image.png
image.png

最后执行到dart的main入口。把flutterview 显示到android 容器上

二 、修改应用名称和启动图标

1 应用名称

android:可以直接在string.xml 定义app_name (宝贝听我说) mainfest中修改label引用为app_name
ios:需要打开工程的xcode 。选中工程 修改
image.png

2 启动图标

首先一键生成app图标。生成的图标分别对应了android和ios平台的资源目录 分别覆盖对应的目录
android:res/mimap
image.png
ios:
image.png

这样在android studio中重新编译运行
图片.png

三、运行

新建的工程默认运行不出意外张这样子
image.png

并且ios上 刚启动也会有一阵白屏~ 啧啧

填坑1-闪屏白屏

android:drawable-launch_backgroud.xml
image.png
设置背景色 和 背景图 作为过渡页面。主要原因:app初始化和flutter初始化一直到渲染出第一贞
ios:
image.png配置Contents.json启动图为spash

填坑2 androidx兼容

编译android项目时候遇见
The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app或者提到“解析资源”失败。

出现这种问题的原因
Android代码通常使用 android.support 库来确保向后兼容性。这些android.support 库已弃用,并替换为 AndroidX。AndroidX具有与旧库相同的功能和一些附加功能,但不幸的是,这两组库是不兼容的。
AndroidX可以通过两种方式在编译时打破Flutter应用程序:

解决
1 编译版本使用了28以下的版本
该应用程序使用AndroidX插件,其主build.gradle文件的 compileSdkVersion版本低于28。
该应用程序同时使用已弃用和AndroidX代码。这时候可以通过升级gradle sdk的编译版本为28
2 避免使用AndroidX

四、基本代码解析

image.png

通过build返回stateless或者statefull widget构建根widget ,
home:指定显示内容
theme:指定主题

效果

lAbPDgQ9q3E28xnOI43EuM4jjcS4.mp4 (1.03MB) http://icon.wuruihong.com/ iocn 一键生成
https://flutterchina.club/assets-and-images/ 资源 闪屏页
#3 https://yq.aliyun.com/articles/672478?utm_content=m_1000026273 flutter启动执行流程