Android adb 常用命令
为设备安装包
1 2 3 4
| adb install -t build/app/outputs/flutter-apk/app-debug.apk
adb -s 77a3675c install -t build/app/outputs/flutter-apk/app-debug.apk
|
部分手机纯净模式下每次安装未验证apk包时会有安装二次确认 需要输入密码 可以在开发者选项中 关闭“监控ADB安装应用”选项 解决
查看真机运行日志
查看所有 Dart & Android 层 log,Release 包仍然可以用 logcat 打印 print()、debugPrint() 输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| adb logcat -s flutter
adb logcat -s flutter | grep SplashScreenAds
adb logcat -s flutter | grep -E 'SplashScreenAds|ApkUpdate'
adb logcat -s flutter | grep -i splashScreenAds
adb -s 77a3675c logcat -s flutter
|
sdk版本切换
fvm
社区版本管理插件
手动切换环境变量
拉取flutter官方github仓库 切换到对应版本tag后复制源代码到本地flutter_sdks文件夹内 手动更改系统环境变量即可
1
| E:\flutter_sdks\flutter-3.35.7\bin
|
切换版本更改环境变量后必须所有终端关闭后重新打开 或者重启电脑
如果出现更改后版本仍然不对的情况时 通过运行where flutter查询当前所有引用的sdk path 排序决定当前最新应用版本
1 2 3 4 5
| $ where flutter E:\flutter_sdks\flutter-3.27.3\bin\flutter E:\flutter_sdks\flutter-3.27.3\bin\flutter.bat E:\flutter_sdks\flutter-3.35.7\bin\flutter E:\flutter_sdks\flutter-3.35.7\bin\flutter.bat
|
可以在.bashrc中显示指定当前需要应用的版本确保正确
1 2
| export PATH="/e/flutter_sdks/flutter-3.35.7/bin:$PATH"
|
运行环境
内置环境
Flutter 内置三种运行模式
| 模式 |
特点 |
编译命令 |
| debug |
热重载、断点调试、性能未优化 |
flutter run |
| profile |
性能分析,接近 release 性能 |
flutter run --profile |
| release |
关闭断言、开启优化、正式发布用 |
flutter run --release |
判断当前模式:
1 2 3 4 5 6
| import 'package:flutter/foundation.dart';
if (kDebugMode) print("debug 模式"); if (kProfileMode) print("profile 模式"); if (kReleaseMode) print("release 模式");
|
自定义环境
如在测试环境build release包但需走开发测试接口调试场景 同web端一致
通过dart-define注入参数
1 2
| flutter run --dart-define=mode=dev flutter build apk --dart-define=mode=prod
|
代码中读取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import 'dart:convert'; import 'package:flutter/services.dart';
class Env { static late String mode; static late Map<String, dynamic> config;
static Future<void> load() async { mode = const String.fromEnvironment("mode", defaultValue: "dev"); final String fileContent = await rootBundle.loadString("env/$mode.json"); config = json.decode(fileContent); }
static String get getMode => mode; static bool get isDev => mode == 'dev'; static bool get isTest => mode == 'test'; static bool get isProd => mode == 'prod';
static String get apiUrl => config["apiUrl"]; }
|
调试模式下切换走不同的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| { "configurations": [ { "name": "record (dev)", "request": "launch", "type": "dart", "args": [ "--dart-define=mode=dev" ] }, { "name": "record (test)", "request": "launch", "type": "dart", "args": [ "--dart-define=mode=test" ] }, { "name": "record (prod)", "request": "launch", "type": "dart", "args": [ "--dart-define=mode=prod" ] } }
|
ios蓝牙机制
app蓝牙权限异常
当你从 控制中心(下拉的快捷开关) 关闭蓝牙时,iPhone 并不会完全关闭蓝牙模块,
而是:只断开当前的蓝牙连接(耳机、手表等),直到第二天早上 5 点之前,不会自动重新连接这些设备
但蓝牙系统本身依然保持开启,以便 AirDrop、定位、App、手表解锁等系统功能 能继续使用。
amdroid端需开启允许搜索附近设备权限
热更新 shorebird
参照shorebird文档 安装本地依赖环境
bash安装异常 powershell中安装后:
- 如果需要升级版本: 更改pubspec.yaml_version: 1.0.0+4
- 打包:shorebird release android –flutter-version=3.27.4 –artifact=apk
- 打补丁热更新:更改代码后直接 shorebird patch –platforms=android –release-version=1.0.0+4,为指定版本号打补丁