Хочете дистанційно кодувати в Android Studio? Ознайомтеся з JetBrains Projector, найкращим способом запуску IntelliJ IDE JetBrains на будь-якому пристрої.
JetBrains — це компанія, яка розробила деякі з найпопулярніших IDE, зокрема IntelliJ IDEA, PyCharm і PhpStorm. Навіть Android Studio, свого роду власна IDE Google для розробки Android, заснована на IntelliJ.
Хоча IDE IntelliJ популярні з певної причини (вони добре), іноді вони можуть бути трохи важкими. Наприклад, IntelliJ і Android Studio можуть займати багато ресурсів, просто будучи відкритими. І якщо ви щось компілюєте, вони використовуватимуть ще більше. Ви також не можете (поки що) справді запускати JetBrains на мобільних пристроях, оскільки JetBrains не має легкодоступних збірок ARM.
Отже, що станеться, якщо у вас немає потужного комп’ютера або у вас навіть немає комп’ютера? Зазвичай тут ви шукаєте інші IDE, які працюють на ARM. Але JetBrains начебто має рішення, і воно називається JetBrains Projector.
Що таке проектор?
Ви, напевно, раніше чули про віддалений робочий стіл або VNC. Це дозволяє графічно взаємодіяти з комп’ютером через локальну мережу або навіть Інтернет. JetBrains Projector працює трохи як віддалений робочий стіл, але без деяких недоліків.
Щоб використовувати JetBrains Projector, вам потрібен комп’ютер десь в Інтернеті для його розміщення. Це може бути екземпляр AWS або домашній сервер. Потім ви можете підключитися до нього з будь-якого підтримуваного браузера, включаючи мобільні Chrome і Firefox.
Але замість того, щоб відображати весь робочий стіл і надсилати його відео на підключений клієнт, JetBrains Projector надсилає інформацію, необхідну клієнту для відображення IDE так, ніби воно відображається локально. Це означає, що немає стиснення чи масштабування роздільної здатності, тому IDE виглядає майже рідною.
Крім того, JetBrains Projector не обмежується лише офіційними IDE JetBrains. Якщо у вас є IDE, яка схожа на IDE від JetBrains, ви можете використовувати її з JetBrains Projector. Це включає Android Studio.
Чому проектор?
Найбільша причина, чому ви можете займатися дистанційною розробкою, це те, про що я говорив у вступі: що робити, якщо у вас немає потужного комп’ютера на базі x86? Ви можете придбати напівпотужний спеціально для розробки, або ви можете розкрутити хмарний сервер і використовувати JetBrains Projector.
Це також може бути корисним, якщо ви просто хочете розвантажити вимоги до ресурсів. Наприклад, у мене є досить потужний ігровий ноутбук з i7-9750H і 32 ГБ оперативної пам’яті. Цього достатньо навіть для великих проектів, якими я займаюся. Але якщо я хочу зробити щось інше на додаток до розробки, що вимагає ресурсів, наприклад перегляд YouTube, грати в гру? Тоді все починає розвалюватися.
Але у мене є сервер Ryzen 7 5800X із 32 ГБ оперативної пам’яті. Тому я встановив JetBrains Projector на нього. Тепер я можу просто відкрити нове вікно Chrome і підключитися до нього зі свого ноутбука, не турбуючись про жонглювання ресурсами. Сервер також збирається набагато швидше, ніж мій ноутбук, тому це безпрограшна ситуація.
Як користуватися проектором?
JetBrains Projector призначений для розміщення на машині Linux. Це не означає, що ви не можете запустити його в macOS або Windows із WSL, але через це ви можете зіткнутися з деякими дивними проблемами.
Щоб налаштувати його, все, що вам потрібно зробити, це перейти до Інсталятор проектора GitHub і дотримуйтесь інструкцій. Вони допоможуть вам установити залежності та налаштувати IDE. Є навіть деякі кроки з усунення несправностей WSL, якщо вони вам потрібні.
Тоді ви можете просто підключитися до адреси свого сервера за допомогою правильного порту та токена (якщо ви встановили його), і тепер у вас є IDE, що працює на вашому пристрої без будь-яких перевантажень.
Android розробки
Я розробник Android, тому хоча я міг би використовувати IntelliJ IDEA для розробки, Android Studio зазвичай працює краще. Незважаючи на те, що JetBrains Projector підтримує сторонні IDE, тепер завантажити та встановити їх можна просто за допомогою вбудованого інтерфейсу командного рядка. Однак це все ще досить просто.
Щоб використовувати Android Studio з JetBrains Projector, усе, що вам потрібно зробити, це завантажити та розпакувати Android Studio де-небудь розумне. Потім ви можете вручну додати його до Projector через командний рядок, вказавши шлях.
Є ще одна проблема з розробкою Android і Projector: запущені програми. Без будь-яких додаткових ви можете кодувати програми та переглядати попередні перегляди в Projector, але ви не можете використовувати емулятор або підключатися до реального пристрою для фактичного запуску та налагодження програм. Або можете?
Це майже так, ніби Google очікував такого сценарію, оскільки ADB може підключатися до віддаленого сервера через Інтернет. Все, що потрібно, це тунель SSH від клієнта до сервера Projector. Я встановив Android Studio на проекторі так, щоб він не намагався керувати ADB і використовував порт 5038. Тоді я просто використовую якийсь SSH-клієнт (OpenSSH, plink тощо), щоб створити тунель, який перенаправляє сервер ADB, що працює локально на порту 5037, на сервер на порту 5038. легко!
Якщо вам потрібна додаткова інформація про роботу Android Studio та SSH-тунелювання, перегляньте це Документ GitHub Хоакім Вергес.
Одна примітка щодо Android Studio та інших сторонніх IDE на основі JetBrains: їх не можна оновити з екрана проектора. Вам потрібно буде віддалено підключитися безпосередньо до сервера та оновити їх звідти. Перш ніж це зробити, переконайтеся, що відповідний екземпляр Projector зупинено.
Android Розробка Android
Оскільки JetBrains Projector працює в браузері, і ви можете підключитися з чогось на кшталт телефону Android, як абсолютно випадковий приклад, я хотів щось спробувати.
Android 11 представив можливість увімкнути бездротовий ADB безпосередньо з пристрою. Хоча деякі виробники розкрили це налаштування раніше, воно доступне не для всіх пристроїв, сертифікованих Google, якщо на них встановлено Android 11 або новішої версії. Хоча бездротове налагодження призначене для використання з комп’ютера, це не обов’язково.
Такі додатки Шизуку продемонструйте, що в Android 11 можна підключитися до вашого пристрою за допомогою ADB... зі свого пристрою, навіть не думаючи про використання комп’ютера. Хоча Shizuku використовує це, щоб дозволити програмам виконувати операції з підвищеними правами, я думаю, ви, напевно, бачите, куди це йде.
Тож я створив додаток! Не знаю, чи опублікую це колись, але це досить просто. У мене є бібліотека SSH разом із двійковим файлом ARM64 ADB. Я використовую двійковий файл ADB для підключення до пристрою, який використовую, а потім використовую бібліотеку SSH для створення тунелю пересилання від мого пристрою до сервера Projector. І, нарешті, я використовую його для зберігання та запуску URL-адрес проектора.
Бам, розробляю для Android... з Android! Щоразу, коли мене немає вдома, але я хочу трохи попрацювати над розробкою Android, я можу просто взяти свій Samsung Galaxy Tab S7. У мене є клавіатура Bluetooth і миша Bluetooth (примітка: якщо ви використовуєте проектор, ви насправді хочете використовувати мишу або трекпад. Це погано працює з сенсорним введенням), тому я можу розробляти та налагоджувати без необхідності перемикати пристрої та тягати з собою набагато важчий ноутбук.
Проблеми
Проектор JetBrains все ще знаходиться на досить ранній стадії розробки, тому він не ідеальний.
- Іноді він трохи затримується, коли реагує на такі речі, як прокручування та перетягування, і елементи керування можуть хитатися.
- Випадково під час перегляду коду бібліотеки (декомпільованого або у вихідному вигляді) товщина шрифту стає дуже великою, і все затримується. Однак, можливо, це було виправлено на момент написання цього.
- Деякі плагіни не працюватимуть належним чином. Оскільки це не прямий відеопотік, такі плагіни, як вбудовані браузери, просто нічого не відображатимуть.
- Підтримки X-сервера немає і, ймовірно, не буде. Це може ускладнити розробку додатків для робочого столу та браузера, але ви завжди можете використовувати тунель SSH із перенаправленням X і локальний сервер X, якщо він вам справді потрібен.
- Іноді інтерфейс блокується, і вам потрібно оновити сторінку або навіть перезапустити службу сервера, щоб вона знову запрацювала.
І є ще щось.
Але чи все це порушує угоду? Звісно не для мене. Мене цілком влаштовує дещо менш відшліфований досвід (зрештою, я використовую Android Studio Canary), особливо якщо це означає, що я можу перенести всю роботу зі збирання на інший комп’ютер і навіть розробляти для свого планшета зі свого планшет.
Навіть з його проблемами, я все ще дуже люблю JetBrains Projector. Це робить можливим розробку з мобільного, переміщує навантаження ресурсів з локального комп’ютера на віддалений, і це просто дуже круто.
Я знаю, що інші IDE, як-от Visual Studio, дозволяють перевантажувати компіляцію на віддалений комп’ютер, але для цього потрібно, щоб IDE було встановлено та запущено локально.
Особисто я дуже радий побачити, куди піде JetBrains Projector, тому що це вже зараз неймовірно. Сподіваюся, вони зможуть вирішити деякі проблеми, які я описав вище, але навіть зараз Projector можна безпечно використовувати для проектів, готових до виробництва.
Якщо ви хочете спробувати проектор JetBrains для себе, ось знову посилання до посібника з інсталяції та початкового налаштування. Якщо ви хочете налаштувати Android Studio в Projector, ось знову це посилання, так само.