Pull to refresh

Comments 36

Как ни страшно это звучит, на самом деле здесь мы приходим к аналогу обычного десктопного софта. Сама программа знает, когда и как ей обновляться

Нет, не знает и не её это дело.
Вот даже не знаю, что ответить на ваше категоричное утверждение. Наверное, порекомендую прочитать эту статью ещё раз.
  1. Я не пишу приложений под Android, но по скольку не вижу в этом ни чего сложного — в будущем это вполне возможно, вобщем-то давно хотел попробовать.
  2. Как пользователь, пробовал пользоваться Yandex.Store около полу года (года два назад) — при всём моём положительном отношении к Яндексу — результат оказался скорее отрицательным, он очень сырой (были ошибки и вылеты), много "заброшенных" приложений (обновления есть, но из Яндекса не обновляются), тёмная тема — специфично. Поиск слабоват. Плюсы были, но они померкли. Я вобще, не понимаю, какие у Яндекса могут быть притенении к Гуглу, если они свой магазин даже допилить толком не могут. Будет хорошее приложение, пользователи сами потянуться, раньше чтобы поставить Аскьу в телефон — в мастерские ходили и у всех смартфоноводов она была.
    Монополия гугл конечно не гуд, поэтому жду надеюсь и верю, что они таки допишут Store. Пробовал ещё какой-то китайский магазин, но без толковой локализации там делать нечего.
  3. Бывает, с 4pda.
  4. Ну например, через Телеграмм, скоро кажется через него вообще всё можно будет делать )
По поводу 4pda — хорошая идея. Еще сюда стоит добавить xda.
Ваше приложение практически невозможно заблокировать

это не так. у гугла есть все механизмы для принудительного удаления любого приложения на девайсе пользователя. уже были прецеденты.
Ну, это на так смертельно, как кажется — на рутованном телефоне вполне можно заблокировать файрволом доступ в инет для "сервисов гугл" и "play market", открывать доступ последнему только в тот момент, когда его запустили ручками чтобы обновить приложения, а первому только в тот момент, когда этого потребует последний для периодической авторизации и буквально на минуту.
Да, даже если он успеет что-то удалить за эту минуту — TitaniumBackup всё восстановит.
Главное, чтоб ТитаниумБекап не удалили)
Он первым же делом и удалит приложения помеченные на удаление. А если есть рут, то в чем проблемы перекрыть доступ маркета к конкретным файлам приложений на перезапись/удаление? а в целом пусть себе работает…
К тому же, включать постоянно и отключать ему доступ убивает на корню всю затею с автоматизацией и ставит жирный минус на удобстве пользования.
Так я-ж не вручную файрвол переключаю — на то есть Tasker, он меняет профиль файрвола автоматом когда я ручками запускаю Play Market.
И это тоже не совсем так. Гугл может удалить любое приложение, установленное из Google Play — это прописано в пользовательском соглашении. Именно такие приложения он и удалил в прошлом, когда выяснилось, что через Google Play распространялось фишинговое приложение. К приложениям, установленным вручную, это не относится.
Да, всё так. Если мы полностью отказываемся от Google Play, то он даже не знает о нашем приложении.
Без гугла становятся не доступны некоторые приложения. Например тот же Убер :(
По поводу ссылок на приложения в Yandex.Store.
Попробуйте дать ссылку на приложение в таком виде:

http://market://search/?q=pname:ххххх
или
https://market.android.com/details?id=ххххх

Где xxxxx — имя пакета.
Должен будет открыться диалог выбора маркета, в котором нужно открыть ссылку (при наличии нескольких маркетов на устройстве).
Конечно костыль, но все же.
Проверить к сожалению не могу. Устройств на андроиде под рукой нет.
Мне нужно не открыть приложение выбранным маркетом, а послать на установку приложения в выбранном маркете. В Google Play приложения просто нет.
  1. никак, её не решить
    2.нет
    3.нет
    4.также как и сегодня
  1. Про бан: соблюдайте правила и бана не будет.
  2. Про магазины: пробовал Яндекс, Samsung, Amazon и 4PDA. Распределение пользователей примерно следующее (в порядке убывания): Google Play — 88%, Samsung Apps — 9.5%, 4PDA — 1.8%, Яндекс — 0.4%, Amazon — 0.3%. Поэтому из альтернатив я бы выделил Samsung Apps и 4PDA.
  3. Сторонние APK стараюсь не ставить. Очень редко скачиваю с 4PDA.
  4. Останутся только лидеры среди магазинов.
Спасибо за ответ. По первому пункту — вот у меня не получилось.

А почему стараетесь не ставить сторонние APK? Боитесь недокументированного превышения полномочий, или перехвата введённых данных? Или ещё чего-то?
Во-первых, там может быть malware. Зачем лишний раз подвергать смартфон опасности? Можно, конечно, натравливать на APK-файл антивирусы, но на 100% гарантии защиты это не даёт.
Во-вторых, нет возможности посмотреть оценки/отзывы других пользователей о приложении. Непонятно какого качества приложение будет кушать ресурсы смартфона и как часто вылетать.
Ну и, наконец, возможность обновиться тоже является немаловажной.
Понял, в случае, если приложение совсем левое — полностью согласен. Но что если приложение с исходниками опубликовано на гитхабе и есть отзывы людей? И статьи на авторитетных ресурсах? И если там есть возможность полуавтоматического обновления с релизов в гихабе?
Скажем, поставили бы вы моё приложение для просмотра рутрекера?
Но что если приложение с исходниками опубликовано на гитхабе и есть отзывы людей?

В этом случае доверия, естественно, больше. Но я лучше соберу проект у себя, чем буду скармливать непонятный APK.
Нужно научиться выживать без Гугль-Плай и других альтернативных сервисов. А ни кто не рассматривал версию, что завтра США под очередным предлогом введет новые санкции и отрежут нам все сервисы Гугля, как отрезали Яблочники все свои сервисы для жителей Крыма. А мы так привязались к сервисам корпорации Добра
Согласен. Но дело здесь не только и не столько в санциях, сколько в том, что полная монополия на распространение Android приложений это плохо. Сильно хуже становится качество сервиса при отсутствии конкурентов.
Мне вот что интересно… мобильная платформа, ресурсы:

"Доступно обновление приложения rutracker free до версии " +
                        lastAppVersion + " - желаете обновиться? " +
                        "Если вы согласны - вы будете перенаправлены к скачиванию APK файла,"
                        +" который затем нужно будет открыть."

Этж создание целых 5 стрингов в памяти. Не проще использовать для этого дела StringBuilder с его .toString() и быть виновным в создании всего 1-й строки?
Оно создаётся и сразу уходит из памяти, как только показан диалог. Ресурсы вы недооцениваете — на Arduino это было бы критично, а для приложения на андроид — никакого значения. Экономить на строках довольно бессмысленно — лучше писать быстро и понятно.
Хотя в целом вы возможно и правы.
Так 5 стрингов в памяти там всегда будут.
Вы наверное не поняли, почему лучше использовать стрингбилдер.
Даже AndroidStudio предложит стрингбилдер заменить на сложение — под капотом всё будет оптимизировано в таких случаях.

String result = "1" + "2" + "3";
// под капотом без оптимизаций (но тут всегда оптимизация будет) превращается в
String temp = "1" + "2";
String result = temp + "3";

В примере создается промежуточная строка. Если бы был вот такой цикл:

String result = "";
for (int i=0; i< 100; ++i){
    // тут проблема, так как оптимизировать работу со строками компилятор не сможет
    // постоянно создаются промежуточные строки и будет бессмысленная нагрузка на GC
    // и лучше заменить на StringBuilder, но в нем будет 100 элементов
    result = result + i;
}

Конкретно по вашему вопросу — строка создалась, строка удалилась после вызова GC — экономия на спичках, не то место для оптимизаций.
Конкатенацию строковых литералов (типа "a" + "b" + "c") компилятор сам преобразует в StringBuilder.

Однако, например, в циклах стоит использовать StringBuilder, как правильно подметил jehy

Но лично я бы написал вообще так:

String message = String.format(getString(R.id.new_update_message), lastAppVersion);

И ресурс строковый

<string name="new_update_message" formatter=true>"Доступно обновление приложения rutracker free до версии %s - желаете обновиться? Если вы согласны - вы будете перенаправлены к скачиванию APK файла, который затем нужно будет открыть.</string>

Пишите приложения правильно
Мы со своим Moto Helplist изначально пошли по пути отказа от Google Play / App Store — сделали все на HTML5 (у нас нет таких задач, которые требуют написания нативного приложения, возможностей HTML5 вполне хватает). Никаких левых сторов, никаких apk, superuser, jailbreak итд итп. На глаз все выглядит как обычный сайт: один раз зашел, все что под капотом установилось на устройство юзера, далее можно отключать интернет и работать. Ну и иконку на экран сохранить чтобы браузер не ругался на отсутствие интернета.

Плюсы понимаете сами: практически полная кросс-платформенность (да и десктопы еще никто не отменял), проблема обновлений не стоит вообще, нет никаких цензоров, да и $125 в год для полностью некоммерческого проекта да еще и по сегодняшним курсам… В общем одни сплошные преимущества.

Но задница пришла оттуда, откуда не ждали.

Для 80% пользователей оказалось не под силу сохранить иконку на экран. Несмотря на три инструкции: текстовую, скриншоты и видео. Они просто этого не осилили. «Ну нишмогла я»© и все тут.

Примерно 10% Стоящих на Страже возбудились на тему «вас нет в плей-маркете? значит у вас там вирус который украдет у меня сапоги и мотоцикл». Вот так просто, безапелляционно и железно, никакие аргументы не работают.
Оставшиеся 10% спокойно установились, заходят и пользуются.

Такая вот статистика…
Выражу свое мнение по вопросу.

Если приложение нарушает какие-то правила Play Store и его не пропускают, это совершенно не значит, что нужно отказываться от Play Store вовсе.
Вы можете:

  • исправить замечания.
  • использовать альтернативные источники, как Вы и пишите в статье.

Аналитика, crashreports — Flurry?

Ручное автообновление приобретает смысл только, если Вы распространяете свое приложение исключительно через публикацию apk. Я бы как пользователь не понял, почему приложение, скаченное с Play (Yahho, Yandex не важно) Store вдруг перекинуло меня ан apk файл.

Отдельно автору ссылка https://google.github.io/styleguide/javaguide.html. У Вас есть проблемы с оформлением кода. Например нельзя использовать UpperCamelCase для названия методов.

activity.Update(lastAppVersion); // это воспринимается как статический класс у activity.

Или имя пакета Вашего приложения должно было бы быть таким ru.jehy.rutrackerfree, но никак не ru.jehy.rutracker_free.
Как web разработчик из крыма, могу констатировать одно — без google play жизнь есть, но она довольно тяжелая. Перекочевал на все перечисленные сторы — не срослось. Как уже было замечено, альтернативные сторы не дотягивают по функционалу, актуальностью приложений и стабильностью. Единственное место для доступа к актуальным приложениям без гугла для меня остается 4pda.ru. Но чаще использую VPN тунель для тоступа к google play. Но и офтоп: google play это пол беды, жизнь без google — вот ЭТО действительно проблема — привет из партизанской VPN-овой жизни
Мне кажется, что пользователи, заинтересованные в доступе к пиратскому контенту, будут менее требовательны к происхождению клиента, который позволяет им это сделать. Так что установки с незнакомого сайта не будут опасаться. Не говоря уже о том, что на 4pda это сайт для многих знакомый.

Другое дело, что "витрины" к rutracker будет недостаточно, просмотрщик со встроенным торрентом показался бы более интересным продуктом (есть же какие-то торренты с открытым кодом, которые вы могли бы интегрировать?). Ну, и тогда можно будет не ограничиваться одним рутрекером.

Торрент клиентов под android есть в количестве — можно выбрать на вкус и цвет. Уверен, что у всех, кому актуально — уже стоят.
Интегрировать что-то своё, пусть даже на основе открытого кода — это просто получить головную боль по поводу поддержки.
Ну и практика пока что показывает, что интерес к моему клиенту — ниже плинтуса. Есть звёздочки и форки на гитхабе, но отзывов и коммитов нет. Видимо, кому нужно — уже давно нашли свои способы обхода. Но что же — у меня была цель немного "поиграть" в приложение, а не делать что-то коммерчески успешное — эту цель приложение выполнило с лихвой.
Использую, внезапно, APKPure — приложение сайта apkpure.com, которое берет APK из Google Play, т.к. настоящий Google Play на Blackberry почему-то батарею потребляет заметно. Еще Amazon Market стоит.
Кстати, даже если ваше приложение успешно опубликовано на Google Play — имеет смысл подстраховаться и как минимум сделать в нём свой алгоритм обновления, который активизируется, если, например, приложение давно не обновлялось. Или по проверке бана на вашем сервере или прямо на Google Play. Иначе, если вас на какое-то время забанят, пользователи не смогут обновить приложение. А если есть запасной вариант — вреда будет заметно меньше.

Пожалуйста, добавьте к этому абзацу уточнение, что следование этому совету прямо нарушает Правила Разработчиков и может привести к бану:
An app downloaded from Google Play may not modify, replace, or update itself using any method other than Google Play's update mechanism

Источник
Это совет как раз на случай того, если приложение вдруг будет забанено. Вряд ли Google проверяет приложение на то, что в нём на всякий случай заложен такой алгоритм. Кроме того, здесь есть тонкость — если приложение только сообщает об обновлении и предлагает пользователю самому установить apk — вряд ли это нарушает данное правило, там скорее имеется в виду, что приложение не должно само менять свой пакет, и это довольно логично.
Sign up to leave a comment.

Articles