AI написав 100% коду, я зробив усе інше: мій досвід створення та релізу Android-застосунку з нуля
Три роки я записував нотатки великим пальцем — у транспорті, на ходу, з пакетами в руках. Щоразу думав: чому я досі друкую те, що можу просто сказати?
Перепробував майже все, що є в Google Play. І щоразу одне й те саме: реклама на пів екрана саме тоді, коли треба швидко зафіксувати думку; запис обривається, щойно замовкнеш на секунду подумати; українська — «одна з 40 мов, про всяк випадок», і половина слів перекручена. А головне — незрозуміло, куди летить голос і що з ним роблять на чужих серверах.
Тут би мала бути фраза «тому я вирішив зробити сам». Але чесно: я не програміст. Не знаю жодної мови програмування — навіть зараз не можу зі стовідсотковою впевненістю сказати, на чому написаний Movlo (Kotlin, як підказали). Весь код написав AI. Моя робота була в іншому: сформулювати, що саме має робити застосунок, прийняти продуктові й бізнес-рішення, і — це виявилось найбільшою частиною роботи — вручну перевіряти результат на живому телефоні й людською мовою пояснювати, що не так.
Приклад, як це працювало на практиці. Розпізнавання побудовано на системному Android SpeechRecognizer з офлайн-режимом (якщо заздалегідь завантажити мовний пакет). Один з тестувальників поскаржився, що мікрофон ніби записує, але текст не з’являється, коли немає інтернету. Я не знав, в чому технічна причина — просто описав симптом. Виявилось: при помилці мережі розпізнавач мовчки й нескінченно ретраїв спроби замість того, щоб показати повідомлення. Я цього не писав і сам би не здогадався, де шукати — але зміг чітко сформулювати проблему як користувач, і цього вистачило, щоб її знайти й виправити.
Монетизація вирішена ще до релізу. Free-версія без штучних обмежень (лімітована безкоштовна версія = гарантована 1 зірка у відгуках, це видно по конкурентах). Pro — разова покупка, не підписка. А тим, хто встановить застосунок на старті, — все залишиться безкоштовним назавжди.
Публікація в Google Play — де AI вже не допомагає. Новий акаунт розробника — обов’язковий закритий тест: 12 тестувальників, 14 днів, і тільки потім відкривають продакшн. За тиждень до відкриття Google оновив вимоги відповідності (targetSdk 36 і нова версія Billing Library) з дедлайном наприкінці серпня — довелось терміново переносити ще не випущений реліз. Тут я теж не писав код сам, але саме мені довелось вести перемовини з підтримкою Google, розбиратись у консолі й приймати рішення, коли щось йшло не так.
Зараз Movlo у продакшні Google Play, безкоштовний, без реклами й без збору даних. Якщо цікаво — ось посилання: play.google.com/...=com.dsokoliuk.voicenotes
Розумію, що для когось це «не справжня розробка». Мені цікаво почути саме таку думку в коментарях — від людей, які пишуть код руками щодня. Де, на вашу думку, проходить межа?
P.S. Дякую за пораду в коментарях — завів issue tracker для багів і пропозицій: github.com/...oop/movlo-feedback/issues
17 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівСпробував, працює. Поставив оцінку 4. Відкриєте код?
Дякую! Поки не готовий відкривати код — тримаю closed source з комерційних міркувань (є платна Pro-версія). Але радий ділитися підходами й рішеннями, якщо цікаво щось конкретне — питайте 🙂
Знаю цікавий аналог — ШвидкоПереклад 🌻
Безкоштовний AI-перекладач, який працює як на Android, так і на iOS. Можна перекладати текст, голос, фотографії та документи, а також використовувати готові корисні фрази.
Спробувати можна прямо в браузері — без встановлення додатка:
shvydkopereklad.github.io
Можливо, комусь буде корисно 👍
О, я таке шукав! Піду заценю :)
якщо вже не було важливо на якій мові пиати чому не кросс-платформа? вже б і iOS аудиторію покрили.
Справедливе зауваження! Кілька причин:
1. Для iOS потрібен Mac, Xcode і платний Apple Developer акаунт ($99/рік) — для першого проєкту це додатковий поріг входу, якого не було для Android (там $25 одноразово, і збирати можна з будь-якого комп’ютера).
2. Ключова фіча — офлайн-розпізнавання через системний рушій — глибоко зав’язана на Android API (мовні пакети, віджет на робочому столі). На Flutter/React Native довелось б однаково писати нативний код під кожну платформу окремо для цієї частини, тобто крос-платформність дала б менше виграшу, ніж здається.
3. Чесно — це перший реальний проєкт, який я довів до продакшену. Свідомо тримав скоуп під одну платформу, щоб реально випустити щось робоче, а не застрягти в подвійній складності з першого разу.
iOS — цілком можливий наступний крок, якщо буде попит, просто поки не пріоритет.
Теж написав «простий» додаток для «себе» під Андроїд, бо у всіх Андроїд.
але якщо думати про публікацію в ПРОД +
То яку платформу розробки порекомендуєте?
Ну і ще питання — з того, що я читав, у Apple буде набагато складніше пройти шлях до App Store, здається...
Якщо додаток без монетизації — то ще й витрати одні виходять.
Хороше питання! Якщо ви від початку знаєте, що хочете і Android, і iOS — я б дивився в бік крос-платформних фреймворків (Flutter або React Native), а не нативної розробки під кожну платформу окремо, як зробив я. У моєму випадку Android-only був свідомим компромісом на старті (простіший поріг входу + одна з ключових фіч глибоко зав’язана на нативний Android API), але якщо стартуєте з нуля з прицілом на обидві платформи — краще одразу так, ніж переписувати потім.
Щодо App Store — це правда, і ось чому:
— Ревʼю в Apple ручне і суворіше, з купою нюансів у гайдлайнах, відхилення — це нормальна частина процесу, а не виняток
— Навіть з Flutter/RN для фінальної збірки та підпису під iOS потрібен Mac (можна орендувати хмарний Mac через сервіси типу Codemagic, не обовʼязково купувати свій)
— Apple Developer Program — $99/рік, і це фіксована плата незалежно від монетизації — якщо застосунок безкоштовний, це чиста витрата без окупності з боку самого App Store
Тобто так, витрати виходять — але це не одноразово, а щорічно, і варто прикинути наперед, чи виправдає це очікувана iOS-аудиторія, перш ніж вкладатися.
Я коли займаюсь публікацією — думаю що було б добре (для мене) — навпаки: я код пишу, а ШІ — нехай от з підтримкою балакає та всі форми заповнює ...........
Ха, справедливо підмічено! Чесно кажучи, з цих двох частин Google Console точно менш приємна за написання коду — там точно віддав би ШІ з радістю, якби міг. Може, наступного разу так і спробую :)
При встановленні спитало доступ до мікрофона, доступ надав, але все одно запис не йде, індикатор мікрофона не оживає — виглядає що доступа до мікрофона не отримано, хоча в налаштуваннях перевірив — доступ до мікрофона є.
Взагалі для тестування на користувачах в таких випадках корисно налаштувати issue tracker — наприклад на гітхабі таке є.
Дякую за детальний опис! Це не схоже на типову відмову в дозволі (тоді б з’явилось повідомлення про помилку) — швидше або «мовчазний» збій запуску розпізнавача одразу після видачі дозволу, або обмеження мікрофона на рівні прошивки (Xiaomi/Huawei/Oppo та подібні часто мають окремий перемикач доступу до мікрофона поза стандартним Android permission, який іноді лишається вимкненим, навіть коли системні налаштування показують «дозволено»).
Підкажете модель телефону і версію Android? Це допоможе відтворити і виправити.
І щодо issue tracker — слушна порада, дякую, налаштую.
POCO M4 Pro
Xaomi HyperOS 1.0.2.0.TKEMIXM
Версія системи (для POCO) 1.0.2.0.TKEMIXM
Версія Android 13 TP1A.220624.014
Дякую за детальний репорт і відео.
Переглянув відео: дозвіл на мікрофон видається коректно і щойно перед спробою (діалог «Дозволити Movlo записувати аудіо?» → «Коли додаток використовується»), але індикатор мікрофона (зелена крапка в статус-барі) жодного разу не з’являється за обидві спроби запису.
Судячи з усього, справа не в самому дозволі, а в окремому перемикачі доступу до мікрофона, який HyperOS/MIUI (і деякі інші оболонки — Huawei, Oppo) тримають окремо від системного вікна дозволів. Розпізнавач мовлення в такому випадку одразу падає з помилкою, а застосунок раніше просто мовчки й нескінченно перезапускав спробу — без жодного повідомлення, тому і виглядало, що взагалі нічого не відбувається.
Виправив: тепер у такому разі диктування зупиняється і показує повідомлення з підказкою, де саме шукати цей окремий перемикач (Налаштування → Застосунки → Movlo → Дозволи, або розділ конфіденційності). Це не прибирає першопричину на боці прошивки, але хоча б чітко покаже, що саме заблоковано, замість тиші.
Зміну запушив, з’явиться в наступному релізі. Дайте знати, будь ласка, чи саме той перемикач у вас і був — це підтвердить діагноз і для інших власників Xiaomi/HyperOS.
Зробив issue tracker, як пропонували: github.com/...oop/movlo-feedback/issues — буду радий, якщо туди ж скинете деталі по вашому кейсу з мікрофоном.
Чому ви package name/bundleId саме такий вибрали? Просто цікаво, питання без підтексту.
Гарне питання! com.dsokoliuk — це стандартна практика для соло-розробника без власного домену, префікс на основі мого нікнейму. А voicenotes — це початкова робоча назва застосунку до ребрендингу в Movlo (перейменував, бо «VoiceNotes» вже було зайнято в Google Play кількома іншими застосунками).
Не поміняв package name на movlo з технічної причини: applicationId не можна змінити після публікації — Google Play сприйме це як зовсім новий застосунок, з втратою історії відгуків і встановлень. Тому в маркеті вже Movlo, а технічний ідентифікатор лишився старим :)