Pull to refresh

Comments 35

Что только люди не придумают, лишь бы Java не изучать…

Я вот всё равно не понимаю – какой в этом смысл? Изучать новый фреймворк, который всегда будет поддерживаться заведомо хуже, чем оригинальный, городить костыли. Только для того, чтобы писать на питоне, а не на джаве?

Я еще могу как-то понять использование HTML + JS для очень простых промо-приложений, для которых достаточно, по сути, сверстать страничку и завернуть в apk, но какой смысл пихать питон в андроид?

Расскажите это разработчикам Kivy и тысячам людей, которые его используют всместе c Python во всем мире!


Что только люди не придумают, лишь бы Java не изучать…

Вы видели у статьи метку? Или вы пытаетесь развести здесь бесполезный холивар?

Скорее речь тут просто о том, что Kivy - не очень подходит для реальных проектов, которые будут использоваться реальными пользователями. Именно по этому, стоит всё же использовать более подходящие языки и фреймворки.

UFO just landed and posted this here
Расскажите откуда и как берутся эти значения:
color_action_bar = ListProperty( 
        [0.4, 0.11764705882352941, 0.2901960784313726, 0.5607843137254902] 
    ) 
    '''Цвет ActionBar.''' 

    color_body_program = ListProperty( 
        [0.15294117647058825, 0.0392156862745098, 0.11764705882352941, 1] 
    ) 
    '''Цвет фона экранов программы.''' 

    color_tabbed_panel = ListProperty( 
        [0.15294117647058825, 0.0392156862745098, 0.11764705882352941, 1] 
    ) 

Поскольку архитектура Kivy проектов предполагает модульность, эти параметры передаются при создании экземпляра используемого класса. К тому же, если я захочу, например, быстро протестировать новую цветовую схему, мне достаточно изменить значения переменных, которые отвечают за цвет приложения в файле Data/Themes/default.ini.


А если вы о самом формате этих значений, то это обычное представление цвета в формате rgba, которое чаще всего используется в Kivy:


>>> from kivy.utils import get_hex_from_color, get_color_from_hex
>>> get_hex_from_color([0.4, 0.11764705882352941, 0.2901960784313726, 0.5607843137254902])
>>> '#661e4a8f'

>>> get_color_from_hex('#661e4a8f')
>>> [0.4, 0.11764705882352941, 0.2901960784313726, 0.5607843137254902]
Может добавить это в статью под спойлер.

Я как-то не думал, что это может быть для кого-то большим вопросом.

В своё время пробовал kivi и мне понравилось. Скажите, а они как-то поборолись с неоправданно большим весом приложения на выходе?

И да и нет. Минимальная стандартная сборка — это 8-9 Мб. Но! При сборке можно указать, какие библиотеки и API не включать в проект. Таким образом размер сборки сокращается до 4 Мб.

тык как же это сделать то? где именно указывать надо?

Ищите в своем python-for-android файл blacklist.txt. В данный файл заносите все модули и библиотеки, которые НЕ НУЖНО влючать в сборку итогового apk.

Один момент. Но учтите, что вручную вы ничего не добьетесь, потому что вы не знаете, какой модуль какую библиотеку потребует в процессе работы. Вам нужно создать полное дерево импортируемых и используемых вашим приложением модулей и библиотек, включая стандартные библиотеки. У меня есть подобная утилита, которая все это делает автоматически и записывает в blacklist все не нужное проекту. Но! Все это я готовил для очередной статьи и этот процесс требует тестов. Статья заброшена, утилита тоже, так лично для меня стало не важно весит ли мое приложение 4 Mb или 7Mb. Если хотите, могу поискать в загашниках...

Почему забросили статью? из-за минусов? ну так они потому что вещи которые вы так чательно разбирали — после разборки кажутся вам очевидными… И вы мало их освещаете в статьях. Но это не повод не писать ещё одну статью. например: вы предлагаете перейти на python3 но при этом не пишите как заставить buildozer (про который была прошлая статья) его использовать. Нужно просто составляя статью «пройти» ВЕСЬ путь в месте с читателем, и тогда будут только плюсы… (да-да, я намекаю что хочу увидеть именно это в следующей статье). И даже не рассчитывайте на мозги у читателя. Нет, читатель не туп. Просто он, читая статью, надеется что в ней будут все грабли собраны в одном месте. Но даже пара грабель — УЖЕ ценные знания.

> «могу поискать в загашниках.»
буду рад даже просто вашему последнему созданному blacklist.txt. (не тому что идёт в комплекте)

К сожалению, старые сборки в python-for-android, в которых я тестировал упомянутую утилиту, благополучно мною удалены как и сама утилита (возмножно, позже еще посмотрю в корзине). Но принцип я вам уже описал. Почему забросил статью? Конечно же, не из-за минусов, коих, к слову, по пальцам можно пересчитать. Работа, плюс был занят частным заказом на Kivy проект для RespberyPI. К тому же готовил новую статью для Хабра -"Kivy — еще проще! Еще нативнее!" (сегодня опубликую). И потом, я пользуюсь мобильным Интернет провайдером, поэтому у меня нет возможности скачать новый SDK для тестовых сборок проектов под Python3. Когда этот вопрос станет для меня вплотную, тогда и статья появится.

Очень интересно. Посматривал на React native. Теперь узнал что есть схожий проект на Python. Скажите, в теории, какой сложности приложение уже можно написать и есть ли примеры приложений в Play Market?

Посмотрите мои публикации — в одной из статей я рассматривал примеры нескольких экранов программы Clean Master…
Насколько сложный проект можно реализовать с помощью Python и Kivy? Любой! Причем в пять раз дешевле и быстрее, чем аналогичный проект на Java! Единственное, что отталкивает разработчиков от Kivy — это невозможность свернуть и восстановить приложение из трея (это грубо — здесь есть свои нюансы), пиар (вот я пытаюсь, как могу, как-то популизировать данный фреймворк), ну и возможности — на самом деле Kivy может все, что может ЛЮБОЕ Java приложение! Скорость работы? Поскольку самые "тяжелые" части Kivy скомпилированы в C, скорость работы соответствующая. Плюс никто не запрещает вам использовать Cython для "тяжелой" математики в вашем проекте. Пробуйте, пишите, подскажем, ответим!

Можно ли сделать так чтобы приложение выглядело нативно под каждую платформу? Хотя бы под одну, стиль кнопок, меню и т.п.
Темы прикручивать как то?
Одна из причин почему я и не стал дальше в нем разбираться. Полезнее изучить другой язык, чем kivy imho.

Kivy это не язык — это фрейморк, написанный для разработки кроссплатформенных приложений на и для языка программирования Python.

Мысль была что полезнее выучить новый язык, чем kivy фреймворк. Язык python нравится, но чтобы на нем с помощью kivy писать приложения считаю, на данный момент, извращением. Но буду рад если что-то изменится :)
Различается ли скорость разработки Android приложения на Python с использованием Kivy и на Java? Много ли велосипедов и костылей приходится придумывать в процессе разработки на Kivy?
Различается ли скорость разработки Android приложения на Python с использованием Kivy и на Java?

Я не заметил.


Много ли велосипедов и костылей приходится придумывать в процессе разработки на Kivy?

Ну, не знаю, если считать, что костыль — это во-о-он та красивая кнопка, то, наверное, много… А так — все, что нужно уже есть непосредственно в Kivy.

Когда пробовал kivy столкнулся с несколькими проблемами. Отсутствие нормального сглаживания — все элементы постоянно покрываются лесенкой.
И очень медленная работа с большим количеством виджетов.
К примеру, хочу сделать календарь и добавляю 30 кнопок в grid_layout и это занимает 1-2 сек. А если не хочется зависания, то предлагают через очередь и дополнительный трэд это делать. Но тогда видно как один за одним элементы появляются
Так же с файловым менеджером. Открываешь его и ждешь 3-5 сек пока появятся иконки, потому что иконка файла состоит из 2-3 виджетов(сама картинка + label к ней) и выходит 10 файлов — 20 виджетов и лаг или погрузка 1 секунду. (А в любом другом файловом менеджере на Java 10 файлов я увижу мгновенно). И я проверял на папках, а не на изображениях, где нужно preview генерировать.

Может у вас есть решение?

Судя по всему, у вас кривая реализация вашего кода. Только что проверил — список из более чем пятидесяти элементов Button отрисовывается за 0.3 секунды. С "лесекой" не сталкивался. Файловый менеджер открывается мгновенно, о каких 3-5 секундах ожидания идет речь не имею понятия.

Для всех кто задумался попробовать kivy очень рекомендую прочитать эту запись в блоге разработчика Kognitivo — одно из лучших приложений на kivy (которых в маркете не больше 10 и половина от автора kivy)
Вам, HeaTTheatR, советую сразу найти в статье пункт Mipmapping and antialising. И вы узнаете почему ваши приложения так сильно пиксилизованны. Если кому-то будет интересно насчет большого количества виджетов тут описано решение подобной проблемы.
Еще хочу сказать по поводу тем оформления. В kivy одна тема android 4. В сети вы найдете от силы еще две и они не самые красивые. То есть вам для каждого приложения придется самому пилить тему для каждого виджета.
Я очень люблю питон и тоже готов все, что угодно пилить на нем, но с kivy проблем у меня было больше чем удобства (но естественно всему виной «кривая реализация вашего кода»)
ваши приложения так сильно пиксилизованны

О чем вы, ради бога!?


В kivy одна тема android 4. В сети вы найдете от силы еще две

То есть, не используя тем, вы считаете, что я не могу сделать в Kivy окно аналогичное модальному диалогу в Windows 10? Вы вообще имеете понятие о Kivy, Canvas и т. д.?


с kivy проблем у меня было больше чем удобства

У некоторых людей есть проблемы с включением стиральной машинки… Удачи...

приложений на kivy в маркете не больше 10

Видимо, потому, что у людей, у которых "с kivy проблем больше чем удобства" — есть проблемы с включением стиральной машинки…

Ох, фреймворк прекрасный, но поддержка свежих версий питона там страдает. К примеру, 3.5 еще не поддерживается, и, судя по всему, поддерживаться будет не скоро ( связано это с компиляцией зависимостей, насколько я смог понять).

Kivy развивается постоянно. Поддержка Python 3.4 имеется, насчет 3.5, пока не знаю...

Sign up to leave a comment.

Articles