Как сделать APK из Android Studio? Создать подписанный пакет

Конечной целью любой java-разработки является создание завершенного приложения : это может быть как библиотека/исполняемый jar-файл, либо web приложение. Имеются различные типы приложений и библиотек. При всем многообразии возможных разношёрстных типов готовых библиотек и приложений android-устройства выбиваются из общей колеи. Для android-устройств конечным программным продуктом являются apk-файлы, которые можно свободно распространять между пользователями.

На заре развития программного обеспечения вся разработка для android-устройств осуществлялась, как правило, в IDE Eclipse со специализированными плагинами типа ADT (Android Development Tools). Данная среда разработки позволяет создавать для android apk-файлы

. Но времена быстро меняются, и сегодня гораздо эффективнее и быстрее создавать apk-файлы в представленной ещё в 2013 году Android Studio, основанную на старом конкуренте Eclipse — системе IntelliJ IDEA.

Аббревиатура apk

(Android Package Kit) символизирует формат файлов, которые используются для распространения и установки приложений на устройства android. Файл apk содержит все необходимые элементы для правильной установки приложения на устройстве, и, по своему назначению, чем-то похож на исполняемые exe-файлы в Windows. Когда Вы «заходите в магазин» Google Play, чтобы выбрать и загрузить какое-либо приложение, Ваше устройство android скачивает и устанавливает файл apk с нужным приложением.

Как сделать APK из Android Studio?

Создание APK или подписанного пакета из Android Studio — это необходимый шаг для настройки приложения в Google Play Store, так как пакет приложений Google Android и пакет Google Play APK — это пакеты, которые необходимо создать, чтобы загрузить пакет приложений в Play Store‌ и иметь приложение опубликовано в GooglePlayStore.

Ниже приведен пример продолжения нашего примера создания лучшего бюджетного приложения для Android с использованием бесплатного существующего кода из партнерской программы TravelPayouts.

Партнерская программа TravelPayouts и код для разработки приложения бронирования авиабилетов WhereCanIFLY Where Can I FLY — лучшее бюджетное приложение для Android

Структура файла APK

В заключении посмотрим на внутренности нашего apk-файла. Сразу же отмечу, что apk-файл можно открыть zip-архиватором, например 7-Zip. Но многое останется недоступным. Лучше использовать анализатор apk-файлов от Android Studio. Далеко ходить не надо : необходимо выбрать пункт меню «Build → Analyze APK …» (см. самый верхний скриншот). В открывшемся диалоговом окне найти нужный пакет в файловой структуре, после чего в IDE будет открыта панель, как это представлено на следующем скриншоте.

Интерфейс панели анализатора разделен на 2 части. В верхней части Вы видите корневую структуру apk-файла. В нижней части можно просматривать структуру выделенного элемента верхней части.

Что сразу же бросается в глаза?

Вспоминаем : в нашем примере/модуле была использована внешняя библиотека с OSGi-фреймворком Felix
org.apache.felix.framework-6.0.3.jar
, расположенная в поддиректории lib В структуре созданного пакета поддиректория lib. Все файлы внешней jar-библиотеки размещаются в корне по пакетам. Можно предположить, что и дополнительное использование бандлов/модулей (а для чего использовать фреймворк, если не использовать бандлы) приведет к тому, что и их содержимое также будет интегрировано в общий пакет. Таким образом, мы лишаемся преимуществ использования OSGi-технологии при разработке приложений для android-устройств, поскольку любая доработка отдельного модуля/бандла будет связана с обновлением всей сборки (apk-пакета). Кроме этого, отсутствует возможность одновременного использования разноверсионных бандлов, а межмодульное взаимодействие посредством сервисов становится «слишком дорогим» (можно и напрямую постучаться к классам бандла, зачем нам посредник-активатор). На данном простом примере я не вижу преимуществ использования OSGi для создания многомодульного приложения.
Буду признателен всем, кто опровергнет данное предположение и предложит значимое использование OSGi-технологии в android-устройстве.
Что касается *.class’ов, то их также не будет в apk-файле. Им на смену пришли файлы *.dex .

Создать подписанный пакет или APK из Android Studio

Создать подписанный пакет или APK из AndroidStudio‌ довольно просто, если вы можете использовать новый ключ загрузки и не забыли пароль своего ключа загрузки — иначе он не будет работать.

Чтобы создать APK из Android-студии, начните с открытия меню «Создать подписанный пакет» или «APK».

Создание подписанного пакета Android-приложения в Android Studio: сборка> создание подписанного пакета / APK

Затем выберите, хотите ли вы создать подписанный пакет приложений Google Android или Google Play APK.

Для того чтобы сгенерировать подписанный пакет, необходимо будет предоставить ключ. Если у вас есть существующий ключ, используйте кнопку «Выбрать существующий».

Если нет, начните создавать новый ключ.

Что такое АПК файл

Современные программы, как правило, состоят из десятков документов и папок, которые требуют много места. В интегрированной среде разработки Android Studio, работающей под Windows, OS X и Linux, предусмотрен сервис компиляции программ для платформы Android. В результате получается один упакованный исполняемый файл формата AndroidPackageKit (APK), обеспечивающий установку приложения с необходимыми библиотеками и ресурсами. В процессе распаковки пользователь выбирает полную установку либо распаковку отдельных компонентов. Второй вариант, как правило, выбирают разработчики для дальнейшего просмотра и редактирования программы.

Создать новый ключ загрузки Play Store

Чтобы создать новый ключ загрузки, введите всю необходимую информацию в форме: путь к хранилищу ключей, соответствующие пароли, псевдоним, соответствующий пароль ключа, срок действия в годах, имя и фамилия, организационная единица, организация, город или населенный пункт, штат или провинция и код страны ISO.

Затем сгенерируйте ключ, который будет сохранен на вашем компьютере.

Теперь можно создать свой пакет приложений Google Android, и вы можете загрузить пакет приложений в Play Store‌ — если только вы не столкнулись с проблемой, такой как использование нового ключа для уже существующего приложения.

Декомпиляция приложений

В статье мы работали только с дизассемблированным кодом приложения, однако если в большие приложения вносить более серьезные изменения, разобраться в коде smali будет гораздо сложнее. К счастью, мы можем декомпилировать код dex в Java-код, который будет хоть и не оригинальным и не компилируемым обратно, но гораздо более легким для чтения и понимания логики работы приложения. Чтобы сделать это, нам понадобятся два инструмента:

  • dex2jar — транслятор байт-кода Dalvik в байт-код JVM, на основе которого мы сможем получить код на языке Java;
  • jd-gui — сам декомпилятор, позволяющий получить из байт-кода JVM читаемый код Java. В качестве альтернативы можно использовать Jad (www.varaneckas.com/jad); хоть он и довольно старый, но в некоторых случаях генерирует более читаемый код, нежели Jd-gui.

Использовать их следует так. Сначала запускаем dex2jar, указывая в качестве аргумента путь до apk-пакета:

% dex2jar.sh mail.apk

В результате в текущем каталоге появится Java-пакет mail.jar, который уже можно открыть в jd-gui для просмотра Java-кода.

Получите сертификат ключа PEM от ключа загрузки

После установки Java-программы вы, наконец, сможете установить программу KeyStore Explorer.

Выберите для начала открыть существующее хранилище ключей.

Затем найдите на своем компьютере ключ в формате .jks, который был создан ранее с помощью AndroidStudio.

Пароль будет запрошен, чтобы открыть этот ключ, и вы должны будете предоставить его, чтобы ввести его детали.

После того, как ключ был открыт, дважды щелкните по нему, чтобы использовать его для загрузки пакета приложений в Play Store, дважды щелкнув по нему.

Все детали будут отображены, и вы сможете нажать на кнопку PEM, чтобы получить доступ к знаменитому сертификату PEM.

Когда отобразится сертификат PEM, просто нажмите «Экспорт», чтобы сохранить его на своем компьютере, и отправьте этот файл в службу поддержки Google Play, чтобы сбросить ключ загрузки.

Через некоторое время они подтвердят, что ключ был сброшен, и что вы можете использовать новый ключ загрузки для генерации подписанных пакетов или APK для загрузки пакета приложений в Play Store — все еще потребуется несколько дней, чтобы новые ключи стали действительный.

Вся операция по сбросу ключа загрузки в Google Play занимает около недели, после чего можно будет снова загрузить комплект приложений Google Android в новом выпуске приложения.

WhereCanIFLY Android-приложения для путешествий

Просмотр и модификация

Допустим, ты нашел интересующий тебя пакет, скачал, распаковал… и при попытке просмотра какого-нибудь XML-файла с удивлением обнаружил, что файл не текстовый. Чем же его декомпилировать и как вообще работать с пакетами? Неужели необходимо ставить SDK? Нет, SDK ставить вовсе не обязательно. На самом деле для всех шагов по распаковке, модификации и упаковке пакетов APK нужны следующие инструменты:

  • архиватор ZIP для распаковки и запаковки;
  • smali — ассемблер/дизассемблер байт-кода виртуальной машины Dalvik (code.google.com/p/smali);
  • aapt — инструмент для запаковки ресурсов (по умолчанию ресурсы хранятся в бинарном виде для оптимизации производительности приложения). Входит в состав Android SDK, но может быть получен и отдельно;
  • signer — инструмент для цифровой подписи модифицированного пакета (bit.ly/Rmrv4M).

Использовать все эти инструменты можно и по отдельности, но это неудобно, поэтому лучше воспользоваться более высокоуровневым софтом, построенным на их основе. Если ты работаешь в Linux или Mac OS X, то тут есть инструмент под названием apktool. Он позволяет распаковывать ресурсы в оригинальный вид (в том числе бинарные XML- и arsc-файлы), пересобирать пакет с измененными ресурсами, но не умеет подписывать пакеты, так что запускать утилиту signer придется вручную. Несмотря на то что утилита написана на Java, ее установка достаточно нестандартна. Сначала следует получить сам jar-файл:

$ cd /tmp $ wget https://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

Далее нам понадобится скрипт-обвязка для запуска apktool (он, кстати, доступен и для Windows), включающий в себя еще и утилиту aapt, которая понадобится для запаковки пакета:

$ wget https://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

Далее просто сваливаем содержимое обоих архивов в каталог ~/bin и добавляем его в $PATH:

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Если же ты работаешь в Windows, то для нее есть превосходный инструмент под названиемVirtuous Ten Studio, который также аккумулирует в себе все эти инструменты (включая сам apktool), но вместо CLI-интерфейса предоставляет пользователю интуитивно понятный графический интерфейс, с помощью которого можно выполнять операции по распаковке, дизассемблированию и декомпиляции в несколько кликов. Инструмент этот Donation-ware, то есть иногда появляются окошки с предложением получить лицензию, но это, в конце концов, можно и потерпеть. Описывать его не имеет никакого смысла, потому что разобраться в интерфейсе можно за несколько минут. А вот apktool, вследствие его консольной природы, следует обсудить подробнее.


Импорт APK в Virtuous Ten Studio

Рассмотрим опции apktool. Если вкратце, то имеются три основные команды: d (decode), b (build) и if (install framework). Если с первыми двумя командами все понятно, то что делает третья, условный оператор? Она распаковывает указанный UI-фреймворк, который необходим в тех случаях, когда ты препарируешь какой-либо системный пакет.

Рассмотрим наиболее интересные опции первой команды:

  • -s — не дизассемблировать файлы dex;
  • -r — не распаковывать ресурсы;
  • -b — не вставлять отладочную информацию в результаты дизассемблирования файла dex;
  • —frame-path — использовать указанный UI-фреймворк вместо встроенного в apktool. Теперь рассмотрим пару опций для команды b:
  • -f — форсированная сборка без проверки изменений;
  • -a — указываем путь к aapt (средство для сборки APK-архива), если ты по какой-то причине хочешь использовать его из другого источника.

Пользоваться apktool очень просто, для этого достаточно указать одну из команд и путь до APK, например:

$ apktool d mail.apk

После этого в каталоге mail появятся все извлеченные и дизассемблированные файлы пакета.

Распространенные проблемы обновления релиза приложения

Обновление моего приложения для Android не развертывается: если новый выпуск не предлагается для загрузки пользователям, которые уже установили приложение, а выпуск приложения на консоли Google Play отображается как опубликованный со всеми живыми обновлениями, это может быть связано с тем, что код версии и название версии не были обновлены, что не позволяет пользователям телефонов идентифицировать обновление как новую версию.
Как вы выпускаете обновление приложения для Android? Убедитесь, что номер версии был обновлен в файле AndroidManifest.xml или в файле build.gradle. В Play Store установлена ​​новая версия приложения, но не отображается обновление

Извлечение АРК из программы

Конечно, извлечь файлы из обычного АРК бывает довольно просто. Это можно даже сделать с помощью обычного архиватора. Но вот как быть, если программа уже установлена, а АРК от нее уже утерян? В этом поможет небольшая программка под названием APK Extractor. Как раз с ее помощью можно вытащить практически из любой программы АРК архив.

Скачать APK Extractor можно, к примеру, из магазина Гугл Плей по ссылке: https://play.google.com/store/apps/details? >


Скачать APK Extractor из магазина Гугл Плей

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

  • Для начала потребуется запустить APK Extractor на мобильном устройстве;
  • Затем в окне программы появится список установленных на смартфоне или планшете программ;
  • Потребуется отметить ту АРК из которой нужно извлечь;
  • И дождаться, пока APK Extractor не справится со своей задачей;
  • Теперь можно в любом файловом менеджере открыть папку «APK Extractor» — здесь и находится вытянутый АРК.


Извлечение АРК из программы

Кроме того, программа поддерживает возможность отправки распакованного файла на электронную почту. Можно также перенести АРК на компьютер. Допускается и сохранение АРК в облачном хранилище. Разумеется, для этого потребуется связать программу APK Extractor с почтой или с хранилищем.

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

Плюсы

  • Есть возможность создавать несколько рабочих областей, устанавливать между ними связи, выделять пространство под рекламные блоки — всего около сотни различных настроек. Функционал — на глаз, примерно 80% того, что есть у AppsGeyser, и 90% от App Inventor. И еще куча своих личных фишек. И все хозяйство быстро, красиво и ладно работает.


Andromo: эти вкладки таят много интересного

  • Отличные комментарии к каждой фиче. Осваиваешься мгновенно.
  • Готовая сборка компилируется в облаке с помощью официальной версии Android SDK. Это плюс к скорости, качеству и надежности работы.

Вывод

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

Примечательные проекты наших соотечественников

Appsgeyser.ru

Предприимчивые ребята из новосибирского Академгородка запустили русскую версию АппсГейзера. С февраля 2012-го с помощью нее было создано почти 20 тысяч приложений. Функционал сильно уступает буржуйскому собрату. Превью (основная фишка appsgeyser.com) часто ведет себя неадекватно. Но у этой компании есть замечательный русскоязычный блог, с которым стоит ознакомиться.

Yandex.Store

Подопечные Воложа во всем стремятся догнать и перегнать Google. В феврале 2013 года запустили свой магазин приложений. Примечателен оплатой покупок с помощью SMS и проверкой установочных файлов антивирусом Касперского. Содержит более 85 тысяч приложений. Модерации нет. Помимо стандартной формы ввода данных о публикации, есть возможность загрузить файл AppDF. Приложение появляется в поиске через 15 минут после отправки в магазин. Судя по количеству загрузок топовых приложений, аудитория пользователей магазина пока крайне мала.

Формат AppDF

Реализация идеи осуществлена с участием Яндекс-разработчиков. Файл с расширением appDF (App Description File) представляет собой компиляцию apk с информацией о приложении (описание, скриншоты, контакты разработчика — всего несколько десятков параметров). Нужен для того, чтобы сэкономить время при публикации в несколько маркетов. Создать appDF можно на сайте проекта. К сожалению, его поддерживают лишь несколько магазинов (CodeNgo, Opera Mobile Store, SlideME и Yandex.Store).

Andromo

Сервис от компании Indigo Rose Software. Эта фирма выпускает всякие ништяки для разработчиков с 1991 года. Среди них Setup Factory (для создания инсталляторов), TrueUpdate (для создания обновляторов) и еще целый ряд популярных продуктов, которыми тебе, скорее всего, уже приходилось пользоваться. Репутация у «синей розы» ого-го! И Andromo — очередное подтверждение того, какие серьезные профессионалы там работают.

Вывод

Общее впечатление позитивное. Поначалу я даже хотела наградить его первым местом в этом обзоре, но томительное ожидание письма и попытка отжать денег на создание второго приложения меня огорчили.

appsbar

Этот сервис упомянут в статье во благо тех товарищей, кого в детстве стукнула клавиатурой по голове учительница информатики (пока они решали квадратное уравнение на Pascal), чем отбила у них желание даже смотреть на программный код. А затаенная обида все равно подмывает их к тотальному захвату галактики. С помощью appsbar можно реализовать свои самые смелые фантазии, получив на выходе кросс-платформенное (!) приложение.

ES File Explorer

ES File Explorer — распространенное и широко используемое приложение для управления файлами Android, которое доступно бесплатно для Android 4.0+. С помощью этого бесплатного приложения для управления файлами вы можете извлечь системные файлы с вашего мобильного телефона. Фактически, приложение это делает автоматически. Вы можете просто поделиться или переместить файл APK на любое другое устройство с помощью электронной почты или служб мгновенных сообщений. Открыв приложение на своем мобильном телефоне, перейдите в раздел «Домой» и нажмите кнопку «приложение». Вы увидите все извлеченные файлы APK. Лучшая часть этого приложения — вы можете найти файлы некоторых системных приложений. Однако есть и минус, это приложение показывает рекламу. Если вы хотите отключить ее, то придется приобрести платную версию.

Альтернатива мобильным приложениям — чат-бот

Вместо мобильного приложения можно использовать чат-бот в соцсети или мессенджере. Это хороший вариант, если пока нет ресурсов или желания разбираться с созданием приложений.

В чат-бот для бизнеса можно заложить много полезных функций — от онбординга до оплаты. Для пользователей это уже привычный инструмент, к тому же им не придется ничего устанавливать на телефон: все работает в привычных мессенджерах.

Вот три кейса по чат-ботам, которые решают реальные бизнес-задачи. Все сделаны в конструкторе чат-ботов SendPulse.

  • Бот для участников онлайн-конференции. Выдавал программу, помогал связаться с организаторами, присылал напоминания и полезные материалы.
  • Бот для болельщиков футбольного клуба. Разработан на бесплатном тарифе, а заменил целое приложение: здесь расписание игр, покупка билетов и мерча, информация об игроках и тренерах, а также специальный раздел, чтобы купить еду на стадионе во время матча.
  • Бот для клиентов кафе «Цапа» в Чернигове. Здесь стандартный для кафе функционал полностью упакован в Facebook Messenger. Можно посмотреть меню, заказать доставку или столик, узнать адрес и оставить отзыв.

Мы собрали целый раздел с примерами чат-ботов. Там можно изучить функционал и протестировать каждого бота.

Боты, сделанные в SendPulse, легко масштабируется. Запустить можно малыша, в котором есть FAQ и ссылка на сайт, а потом превратить его в полноценный магазин с системой привлечения и удержания клиентов, связать его с CRM и email рассылками. Регистрируйтесь и создавайте до трех чат-ботов на бесплатном тарифе.

Когда можно создать приложение самостоятельно

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

Вы помните, когда бизнесу можно самостоятельно сделать сайт? Правильно, когда денег на сотрудничество с профессионалами еще нет, а время и желание разобраться с WordPress или «Джумлой» есть. Такая же ситуация с приложениями. Созданные самостоятельно программы для iOS и Android можно условно сравнить с сайтами на «движках» с открытым кодом.

Речь вот о чем: вы можете открыть интернет-магазин, классный портал или корпоративный сайт на «1С-Битрикс» или на «самописном движке». Эту же задачу можно решить с помощью Drupal, Joomla! или OpenCart. С приложениями так же: можно заплатить большие деньги топовым разработчикам, а можно удовлетворить потребности аудитории с помощью онлайн-конструкторов.

Попробуйте сделать приложение самостоятельно, если:

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

Решили делать программу самостоятельно? Двигайтесь дальше.

Открытие с помощью штатных утилит телефона

Как установить APK-файл на андроид — инструкция

Открыть APK можно с помощью штатных инструментов операционной системы. Для этого необходимо следовать следующей инструкции:

  1. Для начала требуется открыть «Настройки».
  2. В системном меню перейти к разделу «Безопасность и конфиденциальность».
  3. Перейти в пункт «Установка из неизвестных источников» и активировать данную опцию.
  4. Далее нужно перейти к папке, где находится нужный элемент.
  5. Нажать на него для запуска штатного установщика Android.


Стандартные настройки телефона

Важно! С помощью стандартных инструментов можно производить только установку, просматривать структуру или выполнять редактирование невозможно.

Super Backup & Restore

Это универсальное приложение, которое умеет делать резервные копии всех программ, которые вы установили на свой телефон. Неважно, что это: приложения, SMS, контакты, журналы вызовов или что-то еще. Super Backup & Restore универсальное решение для резервного сохранения и восстановления данных для Android. Многие люди, которые не входят в учетную запись Google на новом мобильном телефоне, используют это приложение для перемещения всех важных данных со старого телефона на новый. Данное приложение доступно бесплатно, и вы можете скачать его на Android начиная с 4й версии. Пользовательский интерфейс Super Backup & Restore довольно хорош, он работает плавно и без каких-либо задержек.

Как скачать APK файл из Google Play с помощью файлового менеджера Astro File Manager

Для этого, собственно, нужно скачать с Play Market этот файловый менеджер. Помимо извлечения APK-файла эта программа может управлять бекапом установленных приложений, просмотром видео и изображений.

Запускаем приложение и делаем свайп влево. Откроется главное меню приложения, где нужно будет нажать на «Менеджер приложений». После этого у вас откроется окно, показывающее все установленные на вашем устройстве приложения. Ищем в списке приложение, APK-файл которого хотим извлечь и жмём сюда.

В открывшимся окне клацаем на кнопку «Резервная копия» и ждём, пока резервная копия телефона не будет сохранена в памяти телефона. Это и есть наш APK-файл. По умолчанию, программа сохраняет резервную копию в родной памяти устройства, в папке storage/sdcard/bakups/apps.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]