From e5f6ad0ca617a2f092eb072dad6f78882b78ac6d Mon Sep 17 00:00:00 2001 From: Anton Kastritskiy Date: Fri, 10 Nov 2023 08:03:34 -0800 Subject: [PATCH] default adb path Summary: As I was setting up a new mac I had to change this setting in flipper settings. From a few android people that I've spoken to no one could answer me if the old one is still used. Ideally we should infer this during the first time flipper starts - `/opt/android_sdk` current default - `$HOME/Library/Android/sdk` adb from Android Studio - `$HOME/fbsource/third-party/toolchains/android-sdk` adb that is always available in fbsource Reviewed By: lblasa Differential Revision: D51120929 fbshipit-source-id: edb2a58b9c9f37465ea2fc5493975dd427d5523b --- .../src/utils/settings.tsx | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/desktop/flipper-server-core/src/utils/settings.tsx b/desktop/flipper-server-core/src/utils/settings.tsx index 996a5fe67..47a808dd6 100644 --- a/desktop/flipper-server-core/src/utils/settings.tsx +++ b/desktop/flipper-server-core/src/utils/settings.tsx @@ -8,6 +8,7 @@ */ import os from 'os'; +import fs from 'fs-extra'; import {resolve} from 'path'; import {Settings, Tristate} from 'flipper-common'; import {readFile, writeFile, pathExists, mkdirp} from 'fs-extra'; @@ -18,7 +19,7 @@ export async function loadSettings( ): Promise { if (settingsString !== '') { try { - return replaceDefaultSettings(JSON.parse(settingsString)); + return await replaceDefaultSettings(JSON.parse(settingsString)); } catch (e) { throw new Error("couldn't read the user settingsString"); } @@ -48,9 +49,9 @@ function getSettingsFile() { export const DEFAULT_ANDROID_SDK_PATH = getDefaultAndroidSdkPath(); -function getDefaultSettings(): Settings { +async function getDefaultSettings(): Promise { return { - androidHome: getDefaultAndroidSdkPath(), + androidHome: await getDefaultAndroidSdkPath(), enableAndroid: true, enableIOS: os.platform() === 'darwin', enablePhysicalIOS: os.platform() === 'darwin', @@ -69,14 +70,24 @@ function getDefaultSettings(): Settings { }; } -function getDefaultAndroidSdkPath() { - return os.platform() === 'win32' ? getWindowsSdkPath() : '/opt/android_sdk'; +async function getDefaultAndroidSdkPath() { + if (os.platform() === 'win32') { + return `${os.homedir()}\\AppData\\Local\\android\\sdk`; + } + + // non windows platforms + + // created when created a project in Android Studio + const androidStudioSdkPath = `${os.homedir()}/Library/Android/sdk`; + if (await fs.exists(androidStudioSdkPath)) { + return androidStudioSdkPath; + } + + return '/opt/android_sdk'; } -function getWindowsSdkPath() { - return `${os.homedir()}\\AppData\\Local\\android\\sdk`; -} - -function replaceDefaultSettings(userSettings: Partial): Settings { - return {...getDefaultSettings(), ...userSettings}; +async function replaceDefaultSettings( + userSettings: Partial, +): Promise { + return {...(await getDefaultSettings()), ...userSettings}; }