вторник, 11 февраля 2014 г.

Помоги зоопарку. Samsung GALAXY Note 10.1,Fly IQ440 Energie,МТС 970H,Samsung Galaxy S III GT-I9300

Широко известный в наших кругах Всеводод Леонов обратился к общественности с манифестом Спаси Delphi, помоги зоопарку! Я уже писал ранее про Nexus 4. В ответ на призыв я отправил ему несколько заметок, некоторые из которых он опубликовал. Также Всеволод мне написал, что ничего плохого не случится, если я помещу свои заметки в своём блоге. Так красиво оформлять заметки, как он, я ленюсь, но думаю, что больших неудобств Читателю это не доставит.  Итак:

Samsung GALAXY Note 10.1 (http://www.samsung.com/ru/consumer/mobile-devices/tablet-pc-slate-pc/samsung-galaxy-note/GT-N8000EAASER-gallery)


Android 4.1.2. Купил в позапрошлом году  планшет супруге на ДР. Обошёлся с картой памяти примерно в 25 килорубля + чехол. Колебался - iPad или Android? Выбрал по цифрам самый мощный Андроид. Яблоки мне казались снобизмом, пугали я-мелодии, отсутствие поддержки Flash, отсутствие SD-карточки, платность всего-привсего, странность поведения поклонников торговой марки. 

После приобретения был неприятно поражён стоимостью чехлов и непродуманностью их конструкций. Оказалось, что планшет не поддерживает Flash! К тому же ещё и кабель имеет проприетарный разъём. Кнопки по периметру расположены неудачно - легко случайно выключить, взяв устройство за угол. По сравнению с яблоком - тяжёл, экран проигрывает в качестве. Гориллное стекло в женской сумке без чехла быстро получило заметную царапину от ключей. Рекламируемый стилус терялся пару раз и в настоящее время сидит в своём гнезде и практически не используется. Детям купил уже яблочные дощечки.


Аппарат был подключен к Win7 и сразу оснащён ПО Kies от производителя ещё до установки Делфи. Когда настала пора - сразу стал в работу. Но! При переходе на другой комп(Win8) работать с отладчиком отказался. Кто виноват? - Делфи? Win8? USB3? Оказалось, что если поставить Kies, то и тут всё работает - кто бы мог подумать?!


Fly IQ440 Energie (http://www.fly-phone.com/devices/smartphones/iq440_energie/?sphrase_id=56721)


Андроид 4.0.4. Это мой первый смартфон. Я посмотрел, как люди постоянно держат на верёвке свои аппараты, и решил взять повышенной ёмкости. К тому же, для меня было важно иметь 2 симки. Удалось уложиться в 10 килорублей вместе с картой на 32 Гига.


Аппарат действительно может целый день активно использоваться. Неактивно может легко провести выходные. Весьма тяжёл. Скоростью не балует. Фронтальная камера так плоха, что в помещении трудно считать штрих- или QR-код. Разъём под провод сбоку мешает разместить аппарат в моём автомобильном держателе. Плюс (точнее - минус) разъём довольно скоро хрустнул, и теперь провод слегка люфтит, что несколько тревожит, но пока не привело к каким-то проблемам. Большая проблема - подобрать гарнитуру: многие "пробки" шумят, тикают и стучат при прослушивании, а прилагаемые в комплекте свои - без резинок, в ушах не держаться.

Сначала аппарат был не виден, и я не знал почему - это был мой первый опыт с телефоном. У меня тогда оказался ещё другой аппарат (планшет жены), для которого я стал компилить программу, а потом просто заливал приложение на Fly и запускал. С Делфи телефон заработал через пару недель ВНЕЗАПНО! По ощущениям :) дело в том, что приходили люди с HTC-аппаратом и проставили свой софт. Увы, ничего подробнее сказать не могу - теперь Муха прекрасно себя чувствует и на Win7, и на Win8.


МТС 970H (http://www.shop.mts.ru/smartfony/mts/smartfon-970-black-dlya-raboty-v-seti-mts.html)


Андроид 4.1.1. Куплен ребёнку задёшево - меньше 3 килорублей. Вполне себя оправдывает. Народ интересуется - чё так дёшево? Глючный? Тормозной? Ни разу глюков и тормозов. Очень лёгкая машинка как по весу, так и по отзывчивости. По-шустрее моей энергичной мухи iq440, да и легче раза в два.

Дешевизна сказывается на экране - инерционность и узкий угол обзора. Не слишком приятно листать списки и смотреть фотки, особенно после iPad Air. Но, скажем, в Cut the Rope играть вполне можно. А небольшой размер - даже плюс для людей с пальцами менее 5":)


Сначала был не виден, и я уже знал почему - нужен драйвер. Почти первая ссылка в поисковике отправила меня на известный форум, а оттуда я попал на сайт настоящих производителей аппарата - alcatel(http://www.alcatelonetouch.com/global-en/support/faq/usbdriver.html), где, как рекомендовали на форуме, скачал именно ВТОРОЙ драйвер, и все заработало. В общем - всё оказалось довольно легко и быстро. :)

Samsung Galaxy S III GT-I9300 (http://www.samsung.com/ru/consumer/mobile-devices/smart-phones/samsung-galaxy/GT-I9300RWDSER-gallery)


Аппарат не мой, в руках почти не держал, подробностей не скажу. Но запускает мою программу давно и исправно. Мне дали воткнуть шнурок чисто из любопытства - посмотреть, как выглядит отладка в Делфи на Андроиде.

При первом подключении в Делфи был не виден, хотя в диспетчере задач висел как вполне хорошее и нормальное "переносное устройство" GT-I9300. После включения на аппарате режима отладки (да, это тоже камлание - настройки, о телефоне, 10 раз ткнуть в номерок версии, вернуться, зайти в таинственно появившееся программисткое меню, включить отладку) появилось неопределённое Composite Device( Вин8 выдала банер "Составное устройство"). 


Яндекс массово советовал поставить ПО от изготовителя - Kies. Но я уже знаком с этим обеспечением и не хотел его излишней заботы. Поэтому выбрал на (уж не знаю, реклама ли это) сайте http://www.sidenxab.ru USB Android Драйвер. Как только диспетчер устройств снова увидел GT-I9300, Делфи также смогла с ним работать.

Вывод.


Я хочу, чтобы начинающие Андроид-программисты поняли, что "проблема подключения Андроид к Делфи" или "Делфи к Андроид" - не проблема Делфи, а проблема драйверов Windows. Тот, кто впервые сталкивается с этим в Делфи, винит в первую очередь Делфи, также как, например, в своё время винил я. Но на самом деле, если посмотреть вокруг, видно, что эта проблема встречается У ВСЕХ систем разработки, а не конкретно у Делфи. Так что некоторые трудности с андроидными устройствами - это, как говорит Елена Малышева, НОРМА. И не надо расстраиваться, просто надо понимать ситуацию, и знать, куда копать. А копать-то на самом деле особо глубоко - и не нужно. Просто Диспетчер Устройств, просто Драйвер.

Всем удачи!!!

воскресенье, 9 февраля 2014 г.

TestFlightApp - рекомендую

Как раздавать свои мелкие утилитарные йОс-ные(а между прочим, об Андроиде здесь тоже речь будет) приложения? Есть (я буду по-колхозному писать) АпСторе, есть Дебагинг со шнурком, и есть ещё один странный штук - АдХук. 

Первый вариант для нас - не вариант. Это только "продукт" можно в магазин отдать и ждать полмесяца пока его на полку выложат. А могут и не выложить хотя бы потому, что у Яблончан ВНЕЗАПНО изменились какие-то взгляды на жизнь. Програмульку, которую дать попробовать и быстро отзыв получить для дальнейшей модификации, с таким выходом на исполняющие устройства - не сделать никак. 

Отладкой по шнурку тоже не сильно далеко разбежишься. Это надо брать устройство, отвлекать человека, смотреть его фотки, которые в айТюнз при подключении очень хотят выскочить и резервно скопироваться - жутко невежливо. Никто не любит, когда его почти(да можно и без "почти") интимную вещь подключают к чужому компу, когда какой-то электрический провод втыкают в  это милое родное существо, и какой-то хаккер-багописатель пытается туда внедрить свою колхозную самоделку, да ещё и неизвестно, сколько времени это займёт. А надо учесть, что люди с надкусанными яблоками ещё и очень заняты всегда на разных очень важных совещаниях в самых разных местах нашей необъятной Родины(да что там, Планеты!). Короче - всё плохо.

АдХук - вот спасение! Надо взять с устройства идентификатор, сформировать провижинг(кто не знает перевод - я не виноват), выслать программу на устройство, там перенести в айТюнз, и установить. Хм.. - тоже как-то, уже начиная с " взять идентификатор", не очень чтобы просто...

Что же делать? А вот - прошу обратить внимание на чудо-сайт "TestFlightApp.com" - превосходное решение для мелкоштучных поделий! Вы регистрируетесь сами, просите зарегистрироваться своих тестеров, шлёте им приглашения, и когда они принимают эти приглашения, то вам - о, чудо! - безо всяких подключений к посторонним компам сразу приходят идентификаторы тестовых устройств. Осталось только заполнить провижинг на Developer.Apple.Com, чтобы скомпилить-подписать новым провижингом приложение и загрузить свежеиспечённый билд на этот замечательный сайт TestFlightApp. Нет, ещё не совсем всё. Ещё вы на сайте должны отметить, кому дать разрешение на публикуемое приложение. При этом можно попросить сайт отправить тестерам уведомление. Очень удобно.

А как это выглядит со стороны пользователя? Ему приходит от нас письмо с просьбой подтвердить участие в нашем проекте. Он регистрируется, и на столе его устройства появляется значок TestFlight. Это ссылка на сайт,  где можно посмотреть список доступных приложений с описанием. Нетерпеливый пользователь может сам следить за новостями, периодически заглядывая в TestFlight, а нормальные люди просто получают письма счастья от разработчика. И - чудо из чудес! - совсем как в АпСторе - на столе,  стоит только немного подождать пока пройдёт загрузка,  появляется иконка нашего(вашего) приложения. И всё - вперёд и с песней!

Ура! Никаких проводов и ограничений по времени или местности! Это ли не чудо?!

Разумеется, TestFlightApp предлагает дополнительные функции, связанные с тестированием приложений. Но это уже мелочи по сравнению с тем, что мы уже получили.

Теперь пару слов о том, каковы особенности переустановки йОс-приложения через TestFlight. Я слышал жалобы, что при переустановке все накопленные данные, изменения - всё пропадает. Если с Андроидом проблем больших нет - надо просто все изменения класть во внешнее место, то Яблочная песочница нас файловой системой не сильно балует. А как установить приложение через айТюнз, если оно уже стоит? Надо старое удалить. И если что-то совсем специальное не придумать, то всякие данные (настройки, например) - тю-тю. Так вот - TestFlight пишет новую версию программы поверх старой, не затрагивая те файлы, которые получились в результате прикладной деятельности! Т.е. все изменения и дополнения пользователя сохраняются! Здорово?

Будьте осторожны. Делфи-приложение при запуске начинает выделять из себя в песочницу файлы, которые нужны ему в работе. При этом если файл уже существует, то он не будет перезаписан. И вот представьте, что вы положили в деплоймент не просто новую картинку, а  изменённую картинку. Что будет? Да, изменений на устройстве вы не увидите - новая картинка не будет выгружена из пакета приложения. Имейте это в виду. Praemonitus praemunitus!

Итак, желаю всем, кто ещё не изведал прелестей TestFlight,  приятного знакомства!

И, кстати, Андроид-приложения также могут участвовать в процессе тестирования под опекой TestFlightApp.

пятница, 7 февраля 2014 г.

DropBox против файлов

Есть у меня утилитка DeployFolder (http://alhymov.blogspot.ru/2013/12/deployfolder.html), которая текстовый файл меняет. Файл - проект Делфи. Т.е. XML, но без заголовка. И как этот заголовок отрезать, я не знаю (может, кто надоумит?). Поэтому тупо взял, записанный на диск XML всосал в TStringList, ну и, после удаления верхней строки, записал обратно.

Сначала всё было хорошо, а потом - как-то не очень: ругань пошла о занятом файле. Я, поскольку утилитка-то из Дельфи-студии запускается, решил, что Дельфи его как-то блокирует. Причём маленькие проекты - ОК, а большие - плохо. Тогда я стал проект в Дельфи ручками закрывать перед запуском утилиты, и как-бы стало работать. А потом прошло время, и - опять 25!

Ну, понял я - дело не в Делфи. Наверно, в Винде дело - она не успевает от предыдущей записи отблокироваться. Бред, конечно, но мозгный натиск не сразу Измаил берёт.

И вот я так думал-думал, и - придумал! Т.е. догадался! Проект, который "блокируется" - лежит в DropBox-е, и я его там и пользую. А если посмотреть в проводник, то в окошке этом очень хорошо видно, что на файликах значки меняются - DropBox апдэйтит файлы. А когда DropBox апдэйтит файлы, то что? - правильно! - файл блокируется от внешних посягательств.

Э! - сказали мы с Петром Ивановичем (Это я так раздваиваю свою личность иногда) - так надо же самому первому блокировку положить! Но как вспомнишь про Win32 API, так что-то хочется ещё немного подумать.

Решил я мысль свою в блоге отразить, и по ходу изложения (слава блогу!) догадался, что глупый я, однако, совсем! Зачем же я на диск пишу, и потом тут же считываю, если можно в памятный поток всё сложить, и к диску обращаться только однажды!

Вот сколько буковок из себя выдавил. А смысл - избаловали нас ПК, а не всё, что прокатывает в нормальных условиях, прокатывает в распределённой системе, в DropBox-е. Т.е. польза от буковок должна быть. А мыслеметания бредовые свои я здесь изложил, чтобы читатель понял, что он-то гораздо умнее, и было бы ему от этого очень приятно мои буковки читать. Т.е. полезное с приятным. Так, мне кажется, в мире будет больше счастья и радости.

Итого. Было:

    XMLDocument1.SaveToFile( XMLDocument1.FileName );
    XMLDocument1.Active := False;
 
    ShowStatus( 'Set standard header' ) ;
    with TStringList.Create do
    try
      LoadFromFile( XMLDocument1.FileName );
      Delete( 0 );
      SaveToFile( XMLDocument1.FileName );
    finally Free;
    end;
 
Стало:

    Memory := TMemoryStream.Create;
    try
  //    XMLDocument1.SaveToFile( XMLDocument1.FileName );
      XMLDocument1.SaveToStream( Memory );
      XMLDocument1.Active := False;
 
      ShowStatus( 'Set standard header' ) ;
      with TStringList.Create do
      try
//        LoadFromFile( XMLDocument1.FileName );
        Memory.Position := 0;
        LoadFromStream( Memory );
        Delete( 0 );
        SaveToFile( XMLDocument1.FileName );
      finally Free;
      end;
    finally FreeAndNil( Memory );
    end;
 
Жизнь покажет, будет ли теперешнее отсутствие ошибок постоянным. А читателя благодарю за внимание и надеюсь, что грабли сии минуют его, а сам я буду впредь рачительнее использовать вычислительные ресурсы.