При работе с мобильными приложениями, разработанными на платформе 1С и предназначенными для публикации в Google Play, разработчики регулярно сталкиваются с вызовами, связанными с постоянно меняющимися требованиями Google к безопасности, конфиденциальности и используемым библиотекам. Эти требования могут приводить к предупреждениям, а затем и к блокировке возможности публикации обновлений или даже к удалению приложения из магазина. Мы рассмотрим наиболее частые проблемы, возникшие у коллег, и способы их решения.
Одной из первых проблем, с которой мы можем столкнуться, является предупреждение от Google Play относительно использования разрешения REQUEST_INSTALL_PACKAGES. Google ужесточил правила использования этого разрешения, требуя, чтобы оно было напрямую связано с основной функциональностью приложения, такой как установка пакетов, инициируемая пользователем. Если ваше приложение не является веб-браузером, файловым менеджером, корпоративным инструментом для управления устройствами или аналогичным приложением, то, вероятно, использование этого разрешения будет расценено как избыточное и потенциально опасное.
REQUEST_INSTALL_PACKAGES. Часто это разрешение включается по умолчанию или используется для функций самообновления, которые могут быть реализованы иначе или не нужны в текущей версии.REQUEST_INSTALL_PACKAGES. Пользователь на форуме успешно решил эту проблему именно таким способом. После этого, повторно соберите приложение и попробуйте загрузить его в Google Play.Важно: Всегда внимательно относитесь к разрешениям, которые запрашивает ваше приложение. Избыточные разрешения могут не только привести к блокировкам со стороны Google, но и снизить доверие пользователей к вашему приложению.
Следующий этап, который может вызвать сложности при обновлении мобильного приложения, — это проблемы совместимости между версиями Java Development Kit (JDK) и Gradle, используемыми для сборки. Мы видели, как коллеги столкнулись с ситуацией, когда сборщик 1С имел ограничение на версию Java (например, "Версия Java c 8.0 по 18.99"), а новые версии Gradle требовали более свежего JDK, или наоборот, новейший JDK не поддерживался старым Gradle.
gradle-wrapper.properties вашего проекта. Современные версии Android Gradle Plugin (AGP) и Gradle могут требовать Java 17 или даже Java 21.Примечание о сбоях: Если во время сборки возникают ошибки, и вы заметили, что браузер (например, Opera) перестает работать, как это было упомянуто на форуме, это может быть связано с утечками памяти или конфликтами ресурсов. Перезагрузка ПК часто является временным решением подобных проблем, но для систематического решения стоит проанализировать логи ошибок сборки и потребление ресурсов.
Google Play постоянно обновляет требования к используемым SDK, и одним из наиболее критичных является требование к Google Mobile Ads (GMA) SDK. Нам поступали предупреждения о том, что версии play-services-ads-lite:16.0.0 и play-services-ads:16.0.0 устарели и необходимо перейти на версию 19.3.0+ (а затем и 19.4.0+). Эти предупреждения в конечном итоге превратились в жесткие блокировки, не позволяющие публиковать новые версии приложений.
Важно: Даже если ваше приложение не использует рекламу напрямую, наличие устаревших рекламных SDK в зависимостях может привести к блокировке. Поэтому обновление мобильной платформы 1С до актуальных версий является самым надежным решением.
В процессе публикации нам могут поступать предупреждения, касающиеся сетевой безопасности приложения. Наиболее распространенные из них: "Незашифрованный трафик разрешен для всех доменов" и "Ваше приложение принимает сертификаты пользователей во время проверки защищенных подключений". Хотя иногда эти предупреждения могут казаться "некритичными", Google считает их важными для защиты пользовательских данных.
Network Security Configuration) в Android. Для этого в файле network_security_config.xml (который должен быть создан или изменен в папке res/xml вашего проекта Android) необходимо явно запретить незашифрованный трафик для всех доменов. Мы устанавливаем значение "false" для параметра cleartextTrafficPermitted.
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
Начиная с Android 9 (API уровня 28), по умолчанию незашифрованный трафик блокируется. Однако для совместимости со старыми версиями Android или если вы явно его разрешали, необходимо внести эти изменения.
network_security_config.xml, который мы редактировали выше, мы можем вложить элемент <trust-anchors>, разрешающий пользовательские сертификаты, в элемент <debug-overrides>. Таким образом, эти сертификаты будут доступны, только когда для параметра android:debuggable в манифесте вашего приложения задано значение "true".
<network-security-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="user"/>
</trust-anchors>
</debug-overrides>
</network-security-config>
Это позволит нам безопасно отлаживать приложение, не компрометируя безопасность продакшн-версии.
Важно: Эти настройки критически важны для защиты конфиденциальности пользователей и обеспечения соответствия вашего приложения современным стандартам безопасности.
Некоторые коллеги столкнулись с проблемой, когда мобильная камера и функциональность сканирования штрихкодов перестали работать после обновления приложения, при этом в старых APK-файлах всё работало. Это может быть связано с изменениями в API Android или в самой мобильной платформе 1С, влияющими на взаимодействие с аппаратными средствами устройства.
logcat) или сообщения об ошибках, которые выдает приложение. Это поможет нам понять первопричину сбоя. Возможно, изменились требования к разрешениям камеры или к способам доступа к ней на более новых версиях Android.ДанныеМультимедиа и ПараметрыКачестваСканированияДокументов на сервере мобильной платформы, что может быть связано с работой камеры и сканированием.runtime permissions), особенно для Android 6.0 (API 23) и выше.Важно: Проблемы с аппаратной функциональностью часто требуют комплексного подхода, включая анализ логов, обновление платформы и проверку настроек разрешений.
Еще одна важная проблема, которая может возникнуть, — это предупреждение об использовании устаревшей версии библиотеки Google Play Платежей (Google Play Billing Library). Google требует использования версии 6.0.1 или новее к определенной дате (например, к 31 августа 2024 года), иначе обновления для приложения будут отклоняться.
Google Play Billing Library. Мы должны отслеживать релизы 1С и их описания, чтобы быть в курсе, когда конкретная версия платформы начнет поддерживать новые требования Google.Важно: Несоблюдение требований к Google Play Billing Library напрямую влияет на возможность монетизации вашего приложения и его дальнейшего обновления в Google Play.
Для успешной и беспроблемной работы с мобильными приложениями 1С и их публикацией в Google Play, нам необходимо придерживаться нескольких общих, но очень важных рекомендаций.
Android App Bundle (AAB) вместо традиционных APK-файлов. Это позволяет создавать более компактные приложения, оптимизированные для различных устройств и конфигураций. Мы должны убедиться, что наш процесс сборки генерирует AAB-файлы для публикации.targetSdkVersion). Например, версия 8.3.27.64 мобильной платформы от 1С также поддерживает требование Google Play о размере страниц 16 КБ для Android 15+.Заключение: Успешная публикация мобильных приложений 1С в Google Play требует не только качественной разработки, но и постоянного внимания к меняющимся требованиям экосистемы Android и Google Play. Мы должны рассматривать процесс обновления платформы 1С не как разовую акцию, а как непрерывную работу по поддержанию актуальности и соответствия всем стандартам.