DroidScript
DroidScript
учимся и разрабатываем

Thunkable X: буксует потихоньку

14.08.2018

Эйфория от возможности установки приложения на iPhone без Xcode прошла и всё чаще возникают вопросы, а что дальше-то? В последней 44 версии Thunkable Live X разработчикам, наконец-то, удалось на Android решить проблемы с таймером, слайдером и картой, но неожиданно возник ещё ряд проблем - невозможность запуска больших приложений на Android и iOS, а также ошибка ядра в блоке получения индекса из списка. Любопытно то, как разработчики эту проблему пытались "решить".

Для лучшего понимания ситуации учтём то, что на начало июня 2018 года проект Thunkable X привлёк порядка 3,3 миллионов долларов (в App Inventor под iOS не смогли собрать при помощи народного финансирования и 100 000$) и одновременно с этим анонсировал выпуск бета версии Thunkable X, которая, как вскоре выяснилось к большому недовольству большинства пользователей Android, на самом деле была глубокой альфа-версией - невозможность запуска приложений на заявленном Android 4.1, краши при использовании слайдера, таймера, карты, определённых настроек макета, пустых полях ширины и высоты компонентов, неинициализированном поле ввода текста и др. Под iOS небольшие проекты работали стабильно, но и там хватало проблем - блоки для работы с AirTable не работали, после использования компонента распознавания речи перестаёт работать звук в приложении и кнопки громкости, не работала прокрутка для компоновщика и экрана, не отображались фоновые изображения в компоновщиках, при использовании таймера и слайдера происходила неприятная перерисовка (мерцание) изображений на экране и др. Но это были мелочи по сравнению с потерей проектов. Thunkable X IDE имеет функцию копирования проекта и отправки ссылки на него, но при работе с некоторыми проектами по непонятным причинам происходило их зависание на сервере, в результате которого невозможно было ни скопировать проект, ни создать на него ссылку для копирования на другой аккаунт, в результате чего пользователям приходилось начинать проект с начала (представьте "радость" создания по новой 30-40 экранов).

И как на всё это реагировала техподдержка и разработчики? Иногда пара человек из всей команды извинялась и обещала это исправить, но чаще вопросы уходили в пустоту (только в последнее время один из ведущих разработчиков стал более или менее регулярно отвечать на вопросы сообщества). Понятно, что ребята хотят быть первыми среди тех, кто предлагает бесплатный сервис по созданию и установки приложения на iOS без Xcode, а также сгладить и скрыть острые углы, но тогда и обратная связь должна быть адекватной. Прошло 3 месяца с момента подачи моего предложения по улучшению интерфейса IDE, но не сделано практически ничего. Как использовались "слепые" надписи, так никто не соизволил улучшить их читаемость. А между тем это дело 5 минут. Хочется ошибаться, но сейчас ситуация выглядит так, что этот проект делается студентами для спонсоров, а не пользователей. Смотрите сами. Некоторое время назад мне поступило предложение принять участие в тестировании новых версий Thunkable Live X для iOS и Android. Я решил принять участие и в ответ получил apk-файл. Устанавливаю его и сразу вижу кучу багов. Задаю вопрос, что за версию вы мне прислали? Ответ: сейчас разработчик в отпуске и по его возвращению направлю вам нужную версию. То есть, человек нашёл первый попавшийся ему файл и скинул тестерам - разбирайтесь ребята и пишите ваши предложения. После этого, естественно, желание и дальше бесплатно помогать этому проекту пропало и захотелось понять, а что вообще происходит?

Задачи ломать приложения Thunkable X у меня не было, но после ряда сообщений недовольных пользователей по поводу зависания и краха их проектов в Thunkable X IDE, а также падений приложений на iOS и Android возникла идея хорошенько нагрузить систему, чтобы на практике увидеть перспективы использования её хотя бы для своих целей. И тут вскрылись достаточно большие проблемы.

Первая проблема - ошибка выбора элемента из списка, частота появления которой увеличивается при увеличении размера приложения. В простых приложениях по индексу 1 возвращается первая запись списка, а с увеличение размера приложения всё чаще по данному индексу возвращается второй элемент списка. При достижении некоторого критического размера приложения ошибка возникает стабильно. Если ошибка индексации возникнет при работе с объектами, то это вызовет крах приложения на iOS. Ошибка возникает не только при живым тестировании, но и в установленном на устройстве приложении! Если принять во внимание то, что списки используются в большинстве приложений, то становится понятен масштаб последствий этого бага. После недели общения с одним из ведущих разработчиков на эту тему он написал мне в ответ, что эта ошибка была в генераторе кода Blockly для данного блока, но она исправила себя в процессе отладки, а посему вопрос можно закрыть. Пришлось открыть его снова, ибо обновление прошло, а проблема осталась. После этого разработчик сообщил, что ошибка получения индекса, вероятно, не имеет отношения к Blockly, но связана с тем, как они используют это и, возможно, на неё влияет ограничение размера ядра приложения 1MB (об этом далее). После снятия данного ограничения размер ядра позволит работать со 100MB. Понятно, что вероятность появления ошибки при размере ядра 100 MB существенно меньше, но хотелось бы понять причину и устранить баг, а не размазать его статистикой.

Вторая проблема касается больших приложений. При достижении некоторого критического размера приложения оно вызывает стабильный крах на Android. Выглядит это так: приложение работает на Android, но при добавлении в него ещё одного пустого экрана с парой кнопок всё падает. На моих устройствах iOS данное приложение работает, но на iOS устойствах некоторых других пользователей (и разработчиков) - нет. Речь может идти об ограничении размера ядра приложения 1MB для связки компоненты + блоки + код. В официальной документации написано, что приложения под iOS и Android могут иметь размер до 50 MB, но по факту может получиться так, что уже при размере apk равным 12 MB приложение перестанет вообще запускаться как на Android, так и на iOS. А как определить этот предел в 1MB? В моём случае в приложение было импортировано файлов на 450 KB, а проблемы начались при создании более 23-24 экранов (некоторые изображения перестали отображаться или вместо изображения показывался чёрный квадрат). При этом в работающее приложение можно было загружать внешние файлы на несколько мегабайт. То есть, 50MB на приложение - это предел для работы с внешними ресурсами, а ядро приложения пока имеет более жесткие ограничения.

Какой вывод из всего этого можно сделать? В настоящее время Thunkable X всё ещё является публичной альфа-версией, которую каждый пользователь может использовать на свой страх и риск. Эта версия совершенно не предназначена для начинающих разработчиков, а также публичного и коммерческого распростанения. Её можно использовать только для персонального использования энтузиастами на своих устройствах при создании небольших приложений для себя после правки многочисленных багов костылями.

© 2016-2024 
actech