diff --git a/desktop/flipper-server-core/src/devices/android/AndroidDevice.tsx b/desktop/flipper-server-core/src/devices/android/AndroidDevice.tsx index 81c3e1196..00d895a4a 100644 --- a/desktop/flipper-server-core/src/devices/android/AndroidDevice.tsx +++ b/desktop/flipper-server-core/src/devices/android/AndroidDevice.tsx @@ -120,6 +120,37 @@ export default class AndroidDevice extends ServerDevice { }); } + async setIntoPermissiveMode(): Promise { + console.debug('AndroidDevice.setIntoPermissiveMode', this.serial); + try { + try { + await this.adb.root(this.serial); + } catch (e) { + if ( + !(e instanceof Error) || + e.message !== 'adbd is already running as root' + ) { + throw e; + } + } + console.debug( + 'AndroidDevice.setIntoPermissiveMode -> enabled root', + this.serial, + ); + await this.executeShellOrDie('setenforce 0'); + console.info( + 'AndroidDevice.setIntoPermissiveMode -> success', + this.serial, + ); + } catch (e) { + console.info( + 'AndroidDevice.setIntoPermissiveMode -> failed', + this.serial, + e, + ); + } + } + async screenRecordAvailable(): Promise { try { await this.executeShellOrDie( diff --git a/desktop/flipper-server-core/src/devices/android/androidDeviceManager.tsx b/desktop/flipper-server-core/src/devices/android/androidDeviceManager.tsx index dbd8e7359..b42d71c75 100644 --- a/desktop/flipper-server-core/src/devices/android/androidDeviceManager.tsx +++ b/desktop/flipper-server-core/src/devices/android/androidDeviceManager.tsx @@ -87,6 +87,16 @@ export class AndroidDeviceManager { }); } + // Remote simulators connected via SSH tunnels + const isRemoteDevice = device.id.startsWith('localhost'); + if ( + androidLikeDevice instanceof AndroidDevice && + type === 'physical' && + !isRemoteDevice + ) { + await androidLikeDevice.setIntoPermissiveMode(); + } + // The default way of capturing screenshots through adb does not seem to work // There is a way of getting a screenshot through KaiOS dev tools though if (androidLikeDevice instanceof AndroidDevice) { diff --git a/desktop/types/adbkit.d.ts b/desktop/types/adbkit.d.ts index 944064d29..42b0b1306 100644 --- a/desktop/types/adbkit.d.ts +++ b/desktop/types/adbkit.d.ts @@ -57,6 +57,7 @@ declare module 'adbkit' { serial: string, command: string | string[], ) => Promise; + root: (serial: string) => Promise; screencap: (serial: string) => Promise; pull: (serial: string, path: string) => Promise; openLogcat: (