flutter doctor, 1.22.4
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel unknown, 1.22.4, on macOS 11.2.3 20D91 darwin-x64, locale zh-Hans-CN)
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
You may also want to add it to your PATH environment variable.
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[!] Android Studio (not installed)
[✓] VS Code (version 1.55.0)
[✓] Connected device (1 available)
flutter doctor, 2.0.0
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.0, on macOS 11.2.3 20D91 darwin-x64, locale zh-Hans-CN)
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, please use
flutter config --android-sdk to update to that location.
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] VS Code (version 1.55.0)
[✓] Connected device (2 available)
想对GestureDetector 构造函数进行hook发现无效,demo里的MyApp等自己自定义类可以Hook成功,试了1.22.4和2.0.0均如此;
完整的测试代码: `// 正常Hook,有log输出 @Aspect() @pragma("vm:entry-point") class InjectDemo44 { @pragma("vm:entry-point") InjectDemo44();
@Execute("package:example/main.dart", "MyApp", "-build") @pragma("vm:entry-point") dynamic myAppBuild(PointCut pointcut) { print( '[KWLM81]Before:${pointcut.target}-${pointcut.function}-${pointcut.namedParams}-${pointcut.positionalParams}'); final dynamic obj = pointcut.proceed(); return obj; } }
// 以下方法没有Hook成功,即没有Log输出 @Aspect() @pragma("vm:entry-point") class InjectDemo55 { @pragma("vm:entry-point") InjectDemo55(); @Execute("package:example/main.dart", "MyApp", "+MyApp") @pragma("vm:entry-point") static dynamic myAppConstruct(PointCut pointcut) { print( '[KWLM82]Before:${pointcut.target}-${pointcut.function}-${pointcut.namedParams}-${pointcut.positionalParams}'); final dynamic obj = pointcut.proceed(); return obj; } }
@Aspect() @pragma("vm:entry-point") class InjectDemo66 { @pragma("vm:entry-point") InjectDemo66(); // ReadMe中的写法 @Execute("package:flutter/src/material/app.dart", "MaterialApp", "-build") @pragma("vm:entry-point") dynamic myMaterialAppBuild(PointCut pointcut) { print( '[KWLM91]Before:${pointcut.target}-${pointcut.function}-${pointcut.namedParams}-${pointcut.positionalParams}'); final dynamic obj = pointcut.proceed(); return obj; } }
@Aspect() @pragma("vm:entry-point") class InjectDemo77 { @pragma("vm:entry-point") InjectDemo77();
@Execute("package:flutter/lib/src/material/app.dart", "MaterialApp", "+MaterialApp") @pragma("vm:entry-point") static dynamic myMaterialAppConstruct(PointCut pointcut) { print( '[KWLM92]Before:${pointcut.target}-${pointcut.function}-${pointcut.namedParams}-${pointcut.positionalParams}'); final dynamic obj = pointcut.proceed(); return obj; } }
@Aspect() @pragma("vm:entry-point") class InjectDemo88 { @pragma("vm:entry-point") InjectDemo88(); @Execute("package:flutter/lib/src/widgets/gesture_detector.dart", "GestureDetector", "+GestureDetector") @pragma("vm:entry-point") static dynamic myGestureDetectorConstruct(PointCut pointcut) { dynamic obj = pointcut.proceed(); print( '[KWLM93]:${pointcut.sourceInfos}:${pointcut.target}:${pointcut.function}!'); return obj; } }`
flutter doctor, 1.22.4 Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel unknown, 1.22.4, on macOS 11.2.3 20D91 darwin-x64, locale zh-Hans-CN) [✗] Android toolchain - develop for Android devices ✗ Unable to locate Android SDK. Install Android Studio from: https://developer.android.com/studio/index.html On first launch it will assist you in installing the Android SDK components. (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions). If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location. You may also want to add it to your PATH environment variable.
[✓] Xcode - develop for iOS and macOS (Xcode 12.2) [!] Android Studio (not installed) [✓] VS Code (version 1.55.0) [✓] Connected device (1 available)
flutter doctor, 2.0.0 Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.0.0, on macOS 11.2.3 20D91 darwin-x64, locale zh-Hans-CN) [✗] Android toolchain - develop for Android devices ✗ Unable to locate Android SDK. Install Android Studio from: https://developer.android.com/studio/index.html On first launch it will assist you in installing the Android SDK components. (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions). If the Android SDK has been installed to a custom location, please use
flutter config --android-sdk
to update to that location.[✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [!] Android Studio (not installed) [✓] VS Code (version 1.55.0) [✓] Connected device (2 available)
! Doctor found issues in 2 categories.