Skip to main content

Перенос dev tools на другой диск

Иногда свободное пространство на системном диске ограничено сильнее, чем того хотелось бы, поэтому давайте рассмотрим как перенести директории разработки на внешний диск.

info

Скорость доступа к файлам внешнего носителя практически не будет отличаться, если подключение выполнено через USB 3.0/Thunderbolt интерфейс, а характеристики внешнего носителя на чтение запись начинаются от 450/300Мб/с, это связано с тем, что большинство файлов проектов и программ имеют малый объем и большие скорости накопителей не принесут ощутимого прироста производительности, но использование HDD для этих целей однозначно не рекомендуется.

ВАЖНО ЗНАТЬ

После выполнения этапов данной инструкции функция Восстановление окон после загрузки системы для интерактивных оболочек работает некорректно, после восстановления приложения будут использовать пути установленные по-умолчанию, для таких приложений необходимо выполнить ручной перезапуск. Если вы знаете как исправить данную особенность, нажмите на ссылку внизу страницы и отправьте нам реквест с информацией.

Используемые директории

При разработке для мультиплатформы мы часто используем вот эти директории:

  • проектов для android/kmm:
    ~/AndroidStudioProjects
  • проектов для xcode:
    ~/Documents/xCode
  • расположение файлов Gradle:
    ~/.gradle
  • расположение файлов Kotlin-Native (где Gradle хранит версии Kotlin-Native):
    ~/.konan
  • расположение Archive:
    /Library/Developer/Xcode/Archives
  • расположение DerivedData:
    /Library/Developer/Xcode/DerivedData
  • расположение Android SDK:
    /Library/Android/sdk

Перенос директорий на внешний диск

На текущий момент у нас в системе есть два диска:

  • Системный диск:
    /Volumes/MacDrive/
  • Внешний диск:
    /Volumes/ExternalDrive/

Перенос проектов

Давайте начнем с простого и перенесем для начала директории проектов. Предлагаю создать на внешнем диске папку Projects, а в ней создать: Android, KMM, Xcode. Теперь перенесем наши проекты в них.

Перенос .konan

Подготовим директорию, которую будем в дальнейшем использовать, создадим папку Konan в корне внешнего диска. В терминале вводим:

nano ~./zshenv

В открывшемся файле добавляем строку:

export KONAN_DATA_DIR=/Volumes/ExternalDrive/KONAN/.konan

Для экономии времени можем перенести папку .konan из директории ~/.konan в заранее созданную нами папку.

Перенос .gradle

Чтобы освободить пространство на диске, нам достаточно перенести файлы, которые загружает и кэширует Gradle. Прежде чем это сделать, аналогично предыдущему пункту создадим папку Gradle в корне внешнего диска. Теперь можно задать переменные путей, которые gradle будет использовать, для этого в терминале вводим:

nano ~./zshenv

В открывшемся файле добавляем:

export GRADLE_USER_HOME=/Volumes/Drive/Gradle/.gradle

warning

Сейчас необходимо сделать очень важную вещь: удалить папки .gradle и .idea из директорий проектов, в противном случае при следующем открытии проекта файлы будут вновь загружены в директорию /%USERNAME%/.gradle
В качестве альтернативного метода, можно сделать ре-импорт проектов.

Перенос Android SDK

Запускаем Android Studio и идем в настройки Android SDK:

Settings -> Appearance & Behavior -> System Settings -> Android SDK

Android SDK Installation

В строке Android SDK Location отображается текущий путь, где хранятся скачанные компоненты sdk. Нажимаем Edit, появившийся диалог позволяет настроить необходимые компонент и самое главное путь до них. Выбираем необходимые, а путь, где будем дальше хранить SDK, меняем на:

/Volumes/ExternalDrive/SDK/Android/

Нажимаем Next, подтверждаем изменения и ожидаем окончания загрузки нашего SDK. Если до этого он был уже скачан, то можно до выполнения этих шагов перенести файлы из директории по-умолчанию по нашему пути, тем самым сэкономив свое время. По окончании настроек Android Studio запускаем терминал и открываем файл .zshenv, нам необходимо добавить переменную окружения для Android SDK. К уже имеющимся строкам добавляем:

export ANDROID_SDK_ROOT=/Volumes/Drive/SDK/Android/

После выполненных шагов, ваш файл должен иметь, примерно, такой вид: environment complete for .zshenv

Перенос Android Studio

Также на внешний диск мы можем перенести Android Studio, так как мы устанавливаем IDE при помощи JetBrains Toolbox, то нужно зайти в настройки Toolbox и сменить директорию установки, например на:

/Volumes/ExternalDrive/Apps/JetBrains/Toolbox/

Если Вы не снимали галочку с пункта: Хранить предыдущие версии инструментов для быстрого отката к ним, то удаление Android Studio с системного диска и установка на внешний займет пару минут.

important

Предварительно не забудьте экспортировать свои настройки IDE (File - Manage IDE Settings - Export Settings...) в файл, чтобы восстановить их после установки.

Перенос Xcode

Установить Xcode на другой носитель отличный от системного полностью - нельзя, привязка симуляторов и других необходимых зависимостей требует их наличия по пути по-умолчанию, но мы можем перенести установленное приложение Xcode из папки Программы, например, в нашу созданную папку App.

move xcode in other dir

Если вы попытаетесь скомпилировать свои проекты, то обнаружите сообщение, что Xcode не найден по пути, который указан в окружении и необходимо указать актуальную директорию. Для этого в терминале вводим:

sudo xcode-select --switch /Volumes/App/Xcode.app

где (/Volumes/App/Xcode.app) путь до Xcode.app

Перенос Archive и Derived Data

Перенос данных директорий очень прост, создадим в корне внешнего диска папку Xcode, а в ней: Archive и DerivedData.

Следующий шаг - запустить Xcode и открыть Preference -> Вкладку Locations и изменить пути до Derived Data и Archives, на путь до созданных нами директорий.

location of workspace dir in Xcode preferences

Добавление значений переменных окружения в Xcode

Если сейчас мы попытаемся запустить какой-то из проектов мультиплатформы, то большинство наших изменений не будут видны для Xcode, чтобы добавить в него новые пути до необходимых компонентов и наши значения переменных окружения воспользуемся расширенным скриптом, который предоставляет moko-doctor. Данный скрипт находится в файле setup_xcode_environment_extended.sh Чтобы запустить необходимо в терминале открыть директорию moko-doctor (рассмотрим вариант, без установки moko-doctor) и вызвать:

./setup_xcode_environment_extended.sh

Скрипт обнаружит настроенные пути и если необходимо предложит добавить недостающие значения для переменных окружения.

important

Важный момент: значения, полученные после выполнения всех шагов необходимо скопировать из файла .zshenv в .zshrc .zshrc используется для интерактивных оболочек: в нашем случае, если не добавить значения переменных в этот файл, то, например, git будет использовать пути по-умолчанию и загрузит необходимые файлы по ним.

Добавление значений переменных окружения в .zshrc

Используем самый удобный способ для связки .zshenv и .zshrc - добавим первый во второй в качестве источника данных. Для этого запускаем терминал и вводим:

nano ~./zshrc

И добавляем в файл строку:

source ~./zshenv

Теперь осталось только сохранить изменения в файле и перезагрузить систему. После перезапуска все изменения вступят в силу и наш перенос рабочих директорий на другой диск окончен.