# flutter-tracker **Repository Path**: wildleolemon/flutter-tracker ## Basic Information - **Project Name**: flutter-tracker - **Description**: flutter 卡顿堆栈检测 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-17 - **Last Updated**: 2024-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter_track 一个dart的堆栈检测小工具demo,用于在flutter运行时,进行堆栈检测 ## 开始 实现的原理,通过线程获取堆栈信息,以及通过部分标识符进行堆栈还原 具体的方案实施的流程图:https://www.edrawmax.cn/online/share.html?code=51ab0a205ca911ef89058f5935635826 - 在最开始的时候,构建Android的包,可以直接使用 ``flutter run`` 进行构建flutter package,随后会跑在Android手机上 - 在打开app后,可以使用``flutter attach``进行嵌入,以至于可以调试flutter的内容 项目使用 flutter 版本: 2.5.3 进行构建。项目中引入了 null safe 的框架 Uuid ,因此在跑的时候使用如下的命令: - ``flutter run --no-sound-null-safety`` - ``flutter build --no-sound-null-safety`` 如若flutter版本升级到 2.12以上,理论上不实用 --no-sound-null-safety .. 事实上,只需要在flutter-tracker目录下运行 ``make flutter`` 即可以把项目跑起来了。 ### 小提示 如果发现Android的项目跑不起来,检查一下项目中的的local.properties中是否加入了flutter的sdk,例如: ```properties flutter.sdk=/Development/flutter ``` 如若没有添加,应该优先进行添加。 目录下, mappingout 为生成的符号文件,可以用该指令来生成 ``flutter build apk --release --obfuscate --split-debug-info=./mappingout`` 符号文件如果已经存在,那么可以用命令行进行符号还原: ``flutter symbolize -i -d `` 理论上不建议如此干,因为可能会导致工程具备针对性,而非广泛性。 ## 使用用法 ### Android 使用用法 使用Android studio打开Android目录,之后run app即可 ```shell # 构建debug包 .\gradlew assembleDebug # 构建release包 .\gradlew assembleRelease ``` 生成的文件理论上会存在于 ``\android\build\outputs\apk\`` 下,或者 ``\android\build\outputs\flutter-apk\`` 下 之后到包生成目录下,安装使用即可 ### iOS 使用用法 ## plugins项目构成 如果需要在plugins中添加其他的插件,那么可能需要在插件中添加如下的一些内容,以至于用Android studio 打开的时候,不会冒红。 在插件的local.properties添加你的flutter sdk的路径: ``flutter.sdk=D\:\\Development\\flutter`` 之后再 ``build.gradle`` 中加入如下的内容即可 ```gradle def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } dependencies { compileOnly files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") } ```