Commit Graph

87 Commits

Author SHA1 Message Date
Andrey Goncharov
a4fcd68c19 Downgrade adb-logcat unexpected shutdown event from error to warning
Reviewed By: mweststrate

Differential Revision: D44089920

fbshipit-source-id: 6d258e507e80b2c9f2ac08f743cdb9fe49b702f2
2023-03-15 06:33:11 -07:00
Pascal Hartig
043f5296d0 Demote active iOS device error
Summary: The error is non-fatal as it's already handled and it's not actionable by the Flipper team.

Reviewed By: lawrencelomax

Differential Revision: D44054514

fbshipit-source-id: c54c7e935374a1c97e54a5da4daaa3f26b236023
2023-03-14 05:16:52 -07:00
Andrey Goncharov
3d70020f40 Downgrade user error to warning
Summary: We can't do much if a phone is not setup properly

Reviewed By: lblasa

Differential Revision: D43980508

fbshipit-source-id: 5baf82ae36030b81c7cc90bcf6a5de2af9304fb3
2023-03-10 08:32:24 -08:00
Pascal Hartig
cfcad76e74 Demote Xcode select error to warning
Summary: This is firing regularly when people have a broken local setup.

Reviewed By: lawrencelomax

Differential Revision: D43834469

fbshipit-source-id: 1fbc2cf52f93046984e9846f8aed931106542b03
2023-03-06 04:54:36 -08:00
Andrey Goncharov
618f58b390 Verbose logging for iOS cert exchange
Summary: Helps debugging cert exchange problems.

Reviewed By: lawrencelomax

Differential Revision: D43495107

fbshipit-source-id: 499c08ec6ab15a351d74673f0a5edf9abe5af1b1
2023-02-22 04:42:34 -08:00
kongxiaojun
e2867a74a7 Fixed a bug where the screenshot of some Android phones was unavailable (#4366)
Summary:
The 'screenrecord' command is not in some Android phones e.g OPPO. So 'screenrecord' command can't be used as a basis for determining whether or not you can take a screenshot. Replace it with 'screencap' command  to determine whether you can take a screenshot.

## Changelog

Fixed a bug where the screenshot of some Android phones was unavailable

Pull Request resolved: https://github.com/facebook/flipper/pull/4366

Test Plan: It passed the test on my Mac and OPPO phone Reno2.

Reviewed By: ivanmisuno

Differential Revision: D42918902

Pulled By: passy

fbshipit-source-id: c1f02f075817d90e0d447f466a1168b6ec932e4e
2023-02-02 08:17:33 -08:00
Andrey Goncharov
7e9166137c Add verbose logging for Android cert exchange
Reviewed By: lblasa

Differential Revision: D40981864

fbshipit-source-id: f99f517c5abdce839a441c21d50ce8488b249313
2022-11-04 08:23:44 -07:00
Andrey Goncharov
2c767e1920 Make the universal export work on the older Android devices
Summary: On older Android devices (API 24) `-printf ` is not available

Reviewed By: lblasa

Differential Revision: D40980640

fbshipit-source-id: d1a1bcadc496deaf3d514c1e45b2e0104a937b18
2022-11-04 08:23:44 -07:00
Andrey Goncharov
e886427003 Make device debug info fetching fault tolerant
Summary:
Design doc: https://docs.google.com/document/d/1HLCFl46RfqG0o1mSt8SWrwf_HMfOCRg_oENioc1rkvQ/edit#

Some files on the devices could be unavailable due to lack of permissions (hello SELinux and enterprise builds of iOS apps). Instead of failing the export, we should fetch what we can.

Reviewed By: passy

Differential Revision: D40551931

fbshipit-source-id: 698e157b1283b9e959909b6439cd09d2dc8dc8d6
2022-10-25 05:31:48 -07:00
Andrey Goncharov
821bf2b5b7 Get files from Flipper folder for every app on an iOS device
Summary:
Design doc: https://docs.google.com/document/d/1HLCFl46RfqG0o1mSt8SWrwf_HMfOCRg_oENioc1rkvQ/edit#

Fetch list of files in the `/sonar` folder on iOS devices and fetch all the files

Reviewed By: passy

Differential Revision: D40548410

fbshipit-source-id: d38cbbb1e3b5579c13f30777233e3caf7b8c9b34
2022-10-25 05:31:48 -07:00
Andrey Goncharov
3c8ebf105a Get files from Flipper folder for every app on an Android device
Summary:
Design doc: https://docs.google.com/document/d/1HLCFl46RfqG0o1mSt8SWrwf_HMfOCRg_oENioc1rkvQ/edit#

We'll make the fetching more resilient to errors in subsequent diffs

Reviewed By: passy

Differential Revision: D40512932

fbshipit-source-id: df3d2b14c033ec4434b2bf408f05734d71dee092
2022-10-25 05:31:48 -07:00
Andrey Goncharov
480a3d26f0 List contents of Flipper folder on Android
Summary:
Design doc: https://docs.google.com/document/d/1HLCFl46RfqG0o1mSt8SWrwf_HMfOCRg_oENioc1rkvQ/edit#

In later diffs, we'll start fetching the actual files as well. The list of available files itself might be useful already to see what we have in our folder on the device

Reviewed By: passy

Differential Revision: D40508960

fbshipit-source-id: 96193fef3fed64d509cd3397513ae3e94438ae22
2022-10-25 05:31:48 -07:00
Shoham Peller
29938d0c69 Attempt to su when run-as gets permissions denied
Summary: pull/push might fail when run-as fails on insufficient permissions. When this happens, try to perform the command as root.

Reviewed By: aigoncharov

Differential Revision: D40623363

fbshipit-source-id: a4cc71d70f83ce1a390b14c9af9d3a3fa09f1307
2022-10-24 05:48:06 -07:00
Andrey Goncharov
b5a750935d Populate the initial list of connected devices on startup
Summary:
When we start using Flipper from the CLI for automation, we want to have the list of currently connected devices as soon as flipper server is alive.
Otherwise, we would have to poll flipper server waiting for some magical moment in the future when devices connect.
This way, we can be certain that if flipper server started, but we do not see a device, it is not connected at all.

Reviewed By: mweststrate

Differential Revision: D40184106

fbshipit-source-id: ce4c2b897a2df0081e3a0b6a8c26640599e0f9e8
2022-10-13 03:20:51 -07:00
Andrey Goncharov
97b8b8a1c4 Split flipper-plugin package
Summary:
flipper-server-companion depends on flipper-plugin. flipper-plugin includes dependencies that run only in a browser. Splitting flipper-plugin into core and browser packages helps to avoid including browser-only dependencies into flipper-server bundle.
As a result, bundle size could be cut in half. Subsequently, RSS usage drops as there is twice as less code to process for V8.

Note: it currently breaks external flipper-data-source package. It will be restored in subsequent diffs

Reviewed By: lblasa

Differential Revision: D38658285

fbshipit-source-id: 751b11fa9f3a2d938ce166687b8310ba8b059dee
2022-09-15 10:02:19 -07:00
Andrey Goncharov
69812d543e Do not disconnect dummy devices
Summary: Do not remove dummy devices as they are created during WWW cert exchange and are not picked up by IDB

Reviewed By: lblasa

Differential Revision: D39430458

fbshipit-source-id: 249efda23f324522ae2ae3a0ee4f198ab701d22d
2022-09-12 07:37:21 -07:00
Andrey Goncharov
9c7a53fd05 Fix iOS crash parsing
Reviewed By: lawrencelomax

Differential Revision: D39058673

fbshipit-source-id: 64065c6d7e9fa96e827419bd6cffbceccc110d89
2022-09-05 07:46:02 -07:00
Lorenzo Blasa
dab510c546 Fix starting screen captures
Summary:
Starting a screencapture longer than 30 seconds would timeout as the start command waits for the process to finish. Removed that wait is it is the stop command that should only wait for the finish.

(n.b. please ship after accepting, as I'm on PTO)

Reviewed By: LukeDefeo

Differential Revision: D38918570

fbshipit-source-id: fd93e1239985c81a2143ceb79312518e7ebb27f5
2022-08-25 02:18:40 -07:00
Andrey Goncharov
9b58f5217e Catch crash file parsing errors
Reviewed By: passy

Differential Revision: D38940908

fbshipit-source-id: 59f0669311093a4a9c24f570d7e63de0a51f9376
2022-08-23 08:55:25 -07:00
Andrey Goncharov
f132d95bee Fix crash reporter
Summary: Changelog: Make crash reporter pick up and parse .ips crash reports

Reviewed By: LukeDefeo

Differential Revision: D38355089

fbshipit-source-id: dc1b46257ea12c2e67d8a9baab7f35a905be2204
2022-08-02 10:08:35 -07:00
Luke De Feo
6c5faf2932 Add command to install app to flipper server
Summary: There is a new flipper server command to install apps. For android it uses adb (via adb kit) For ios depending on idb availablity it will use idb or xcrun. Consumed in the next diff

Reviewed By: lblasa, aigoncharov

Differential Revision: D36936637

fbshipit-source-id: e09d34d840a9f3bf9136bcaf94fb8ca15dd27cbb
2022-07-07 07:50:14 -07:00
Andrey Goncharov
c88e8e07d0 Support externally started IDB companion
Reviewed By: lblasa

Differential Revision: D37453361

fbshipit-source-id: 2acd53ae40c8a3f8971ee47cb5161c371be6d3a9
2022-06-27 05:03:09 -07:00
Andrey Goncharov
0f038218f8 Share uuid
Summary: Expose uuid from flipper-common as it is required in multiple packages

Reviewed By: lblasa

Differential Revision: D36441889

fbshipit-source-id: 1fa539cb437976dbefe7d5d9a52e5e098a6402a7
2022-05-18 03:13:31 -07:00
Andrey Goncharov
754afd0d2d Fix and re-apply "[flipper] Automatically set Android devices into the permissive mode"
Summary: Reverts D36263724 (0ee8f09fe5) and fixes the underlying crash by setting only physical devices in the permissive mode

Reviewed By: passy

Differential Revision: D36275055

fbshipit-source-id: 25a691e9c07e20a3341630db508795c133a9bd81
2022-05-10 08:42:58 -07:00
Mengke Ding
0ee8f09fe5 Back out "Automatically set Android devices into the permissive mode"
Summary:
Original commit changeset: 471470c5ca91

Original Phabricator Diff: D35356211 (501abc6b55)

Recently, bloks users reported that android emulators lost connection upon launching Flipper. (S270689)

Manual bisecting indicates that remote emulators won't crash on v0.142.362128844 (4/6) but crash on 0.143.365099607 (4/21).

Looking at https://www.internalfb.com/code/fbsource/[history]/xplat/scripts/.flipperversion.v2, and backing out D35356211 (501abc6b55) fixes the issue.

It's still unclear why setting `setIntoPermissiveMode` would crash/disconnect the android emulators, I'd defer Flipper team to investigate this further but this diff should unblock all the android bloks emulator + Flipper use case.

Reviewed By: lblasa

Differential Revision: D36263724

fbshipit-source-id: e8674730c0185457f6eda347ce7d9a41f9e1a2a4
2022-05-09 16:04:14 -07:00
Andrey Goncharov
501abc6b55 Automatically set Android devices into the permissive mode
Reviewed By: nikoant

Differential Revision: D35356211

fbshipit-source-id: 471470c5ca91c824590a409c4474433f2277b1f2
2022-04-07 02:49:48 -07:00
Andres Orozco Gonzalez
83133618d6 add adbkit configurations settings
Summary: Adbkit configurations settings may be neccesary when we want to run flipper-server in an IPv6 stack machine as localhost would bind to [::1] rather than 127.0.0.1 which is where the adb server usually runs

Reviewed By: mweststrate

Differential Revision: D34964851

fbshipit-source-id: 9cf70f9bdc0c40e92382b1537013439f85983f65
2022-03-23 04:24:23 -07:00
Pascal Hartig
c180b24753 Fix typo
Summary: Well, and added another word.

Reviewed By: lblasa

Differential Revision: D34944504

fbshipit-source-id: eb4e7db05ee846721fa18899aa50596124632b5b
2022-03-17 04:11:37 -07:00
Lawrence Lomax
995d1c8180 Remove IOSDevice.buffer, IOSDevice.log
Summary: It's unused, can only assume that it was a log buffer in some distant time which is now hidden behind a separate log listener class

Reviewed By: passy

Differential Revision: D34787086

fbshipit-source-id: 0f920649c119efc5172ca7dcc6b53cfb802a5cbf
2022-03-10 09:48:42 -08:00
Pascal Hartig
71bdb23a1d Make log clear failures a warning
Summary:
Logcat can sometimes fail to clear the logs for some reason.
There's nothing we can do about this as we're directly calling out to adb.

Reviewed By: lawrencelomax

Differential Revision: D34749970

fbshipit-source-id: 2166717ace491f7b73b380576392638ef9276b78
2022-03-09 07:40:39 -08:00
Pascal Hartig
9bd6c7f54a Remove unused import
Summary: Per title.

Reviewed By: jknoxville

Differential Revision: D34749935

fbshipit-source-id: 8adaedf18d1528a60a0623bbe67b8072e3d11b13
2022-03-09 07:40:39 -08:00
Andrey Goncharov
6c74f2dd18 Set device features on device initialization
Summary:
1. Identify if device supports screenshots/screen recording when it is created.
2. Disable screen recording/screenshot buttons when they are not supported

Reviewed By: passy

Differential Revision: D34611133

fbshipit-source-id: 82ad2d67e4af482d9becf7995187667b5d99bc36
2022-03-04 02:00:23 -08:00
Andrey Goncharov
3b390b74ff Track client connections and autostop server add-ons when all clients leave
Reviewed By: mweststrate

Differential Revision: D34045584

fbshipit-source-id: 1ad0cfffb9d304f0359c973d76d6956f7e932f72
2022-02-28 03:50:34 -08:00
Peter Velkov
9d2f11f505 Fix adb path check on Windows (#3434)
Summary:
The adb path check seem to be platform dependent

Instead of pre-validating the path we can execute the intended command and retry with an alternative adb path only if it fails with file not found error

Related to https://github.com/facebook/flipper/issues/3430 (adb is not detected)

## Changelog

Fix ADB detection and startup on Windows

Pull Request resolved: https://github.com/facebook/flipper/pull/3434

Test Plan:
#### adb is detected successfully when `adb.exe` is in `platform-tools`
![image](https://user-images.githubusercontent.com/12156624/153605414-b85c1aef-1e60-457d-be90-3673900d7cc5.png)

#### Falling back to alternative path when `adb.exe` is the SDK folder
![image](https://user-images.githubusercontent.com/12156624/153605693-0adb9c1b-e77f-44a1-9d2c-00cf40f59645.png)

#### Otherwise failing if `adb.exe` is not found
![image](https://user-images.githubusercontent.com/12156624/153605797-307304d3-e513-459a-9e28-53d95ba94642.png)

Reviewed By: passy

Differential Revision: D34240518

Pulled By: aigoncharov

fbshipit-source-id: db834bbdc9815e5ad41f7a1329ec8d5869f6f24b
2022-02-16 02:59:39 -08:00
Lorenzo Blasa
dbe818c6e1 Port-forward websocket ports
Summary:
^
Changelog: Port-forward websocket ports

Reviewed By: passy

Differential Revision: D34210187

fbshipit-source-id: 8ec84a9ce89d9982519111417538b7bfa0964cfc
2022-02-14 04:37:21 -08:00
Lawrence Lomax
9973014116 Fix error message when there's no xcode-select'ed Xcode
Summary:
This error messaging is confusing for device only users. These users may only be running against a device **without xcode installed**, which is supported.

However, we also need to handle the case where a user has a sim running and they haven't xcode-select'd as this will mean that the sim is working fine, but the user has no way of knowing why Flipper is not working.

Reviewed By: passy

Differential Revision: D34140277

fbshipit-source-id: f9b035b6c7918424d6131d1dfcdba10acf438fa8
2022-02-11 00:33:48 -08:00
Lawrence Lomax
2a9983b1ef Use Promise.all for checking xcode-select and apps in parallel
Summary: These can be batched together rather nicely

Reviewed By: lblasa

Differential Revision: D34139753

fbshipit-source-id: 7388630dcae34d40308d54f18a37215cf18e5904
2022-02-10 07:59:24 -08:00
Lawrence Lomax
84fac685ac Actually use unit tested function in wrapped xcode check
Summary: Accidentally tested a function that should have been called from the internals. This makes the internal function use the check.

Reviewed By: lblasa

Differential Revision: D34139589

fbshipit-source-id: fac13f7b54ffb0b6f501fb9237f55766706e975a
2022-02-10 07:59:24 -08:00
Andrey Goncharov
3871755064 Fix extracting device ID from the path for iOS simulators
Summary: Changelog: Fix extracting device ID from the path for iOS simulators

Reviewed By: lblasa, antonk52

Differential Revision: D34142876

fbshipit-source-id: 57d3bffcda7bb7b4bf88ea837eb9bf2dc8405764
2022-02-10 06:52:38 -08:00
Andrey Goncharov
c33a5f9bef Fix cert exchange on iOS with multiple devices connected
Reviewed By: lblasa, nikoant

Differential Revision: D34142119

fbshipit-source-id: e5edc4962e75f2e6f91d9ed304ffd080fd29ff27
2022-02-10 05:41:06 -08:00
Liam Jones
8696349593 Fix Xcode version check (#3428)
Summary:
Fixes https://github.com/facebook/flipper/issues/3396 - the Xcode version mismatch check has been broken since 0.132.0.

## Changelog

Fixed Xcode version mismatch check

Pull Request resolved: https://github.com/facebook/flipper/pull/3428

Test Plan: No existing test, manually tested locally on macOS 11.6.3 via `yarn start` when launching the Simulator directly or via `yarn react-native run-ios` in an RN project

Reviewed By: lblasa, mweststrate

Differential Revision: D34139471

Pulled By: lawrencelomax

fbshipit-source-id: 97920de5c463b366ef7ecaef0441ee37debe5d46
2022-02-10 01:48:11 -08:00
Michel Weststrate
597f679ed3 Propagate errors properly when cert exchange fails
Summary:
Certificate exchange errors should be communicated back to the user, as they are often actionable, and otherwise leave users in a stuck state.

Also removed the ServerController interface, upgraded the listener types to get at the necessary internal apis typewise that were already available.

Removed that error wrapping utility complaining about idb installation, this is rarely ever the problem anymore, and it hides the underlying error.

Reviewed By: nikoant

Differential Revision: D34105452

fbshipit-source-id: 3b3cd0b99cecbda26dfd0744a90690fe568a5ea5
2022-02-09 04:22:25 -08:00
Andres Orozco Gonzalez
4b6fcb6aaf new look up for adb path
Summary: Look up for the path of the adb may sometimes fail when looking for the folder platform-tools because the adb configuration wasn't done by android studio

Reviewed By: aigoncharov

Differential Revision: D33888687

fbshipit-source-id: 4d0cad2f6b19717e45422632f5d459813a7b7ee0
2022-02-03 07:14:22 -08:00
Michel Weststrate
a31494f321 Fix unnecessary 'still authorizing' error
Summary:
When connection to Android, I always get an error popup with 'device still authorizing', which disappears itself and the device connects fine. It seems that this was a case we handled gracefully before, but the error message we check for has changed. Also updated the log message so that we get it in our monitoring I don't silently get stuck in this state.

Changelog: Fixed 'device still authorizing' errors showing up while connecting to an Android device

Reviewed By: aigoncharov

Differential Revision: D33976028

fbshipit-source-id: dbb055bbbd43bad129b10ffee4a8dbb50be8e87a
2022-02-03 04:20:54 -08:00
Andrey Goncharov
c238cef5b0 Verify certificate provider medium
Reviewed By: antonk52

Differential Revision: D33917041

fbshipit-source-id: 91a9554397063d53a903a5b1406b46ddf07360b2
2022-02-02 03:07:00 -08:00
Andrey Goncharov
c7492a83c7 Remove global access to adb client and idb config
Summary: Idb and adb sholuld not really be accessed out side of Adnroid and iOS device managers

Reviewed By: lawrencelomax

Differential Revision: D33915162

fbshipit-source-id: 0d1bb028b9a53254cf5b0ce6289ae76339c5a254
2022-02-02 03:07:00 -08:00
Andrey Goncharov
51ef1810b2 Defer initialization of Android and iOS device managers
Summary: Remove hidden async initialization of adb and idb. Make it explicit. Remove nullable fields in Android and iOS device managers.

Reviewed By: lawrencelomax

Differential Revision: D33915177

fbshipit-source-id: 882f79310410e0dfde6169abf343ab808644e4a2
2022-02-02 03:07:00 -08:00
Andrey Goncharov
fd13399cb9 Extract WWW certificate provider
Summary: Extract WWW certificate provider from the iOS certificate provider. Hide its implementation from OSS since it is not relevant for OSS folks.

Reviewed By: mweststrate

Differential Revision: D33895378

fbshipit-source-id: 376afda3b5fa3857c0eb280b92555314eb1a0d1f
2022-02-02 03:07:00 -08:00
Andrey Goncharov
29f6d0e711 Add device-specific Certificate Providers
Reviewed By: mweststrate

Differential Revision: D33821880

fbshipit-source-id: c75c71db4d7dc680f75cf41ba2d5dad009a5fd03
2022-02-02 03:07:00 -08:00
Andrey Goncharov
b9aeaa9339 Enhance iOS device manager tests
Reviewed By: lawrencelomax

Differential Revision: D33915694

fbshipit-source-id: fc4bfd30b8f504f2f242f94e61967ee68cc83100
2022-02-02 03:07:00 -08:00