При переходе на новые версии мобильной платформы 1С (начиная с 8.3.11) многие разработчики сталкиваются с рядом специфических ошибок при сборке APK-файлов. Сборщик начинает требовать новые версии Android SDK, ругается на используемую версию Java или внезапно прерывает процесс из-за ошибок распаковки файлов Gradle. Давайте подробно рассмотрим основные проблемы и разберем по шагам, как правильно настроить рабочее окружение для успешной сборки мобильного приложения.
Начиная с версии 8.3.11, мобильная платформа 1С перешла с системы сборки Ant на более современную Gradle. В связи с этим при попытке собрать приложение вы можете получить следующее сообщение:
Используемая мобильная платформа может быть собрана только при использовании Android SDK Tools версии 26.x и старше (используется Gradle). Для сборки используется версия 26.0.1
Даже если вы обновили Android SDK, 1С может "не видеть" нужную версию компонентов. Разберем по шагам, как обеспечить сборщику доступ к правильным инструментам:
Android SDK Build-Tools и вручную отметьте для установки версию 26.x (например, 26.0.3).Android SDK (версия 26+).Зачастую Android Studio по умолчанию устанавливает SDK в скрытую папку профиля пользователя, например: C:\Users\ИмяПользователя\AppData\Local\Android\Sdk. Проанализируем ситуацию: если вы выполняете сборку на сервере 1С, служба сервера обычно работает под отдельной системной учетной записью (например, USR1CV8) и банально не имеет прав доступа к вашей пользовательской папке.
Посмотрим, как это исправить:
C:\Android_SDK или C:\mobile\sdk.Короткие пути без спецсимволов также предотвращают многие внутренние сбои компиляторов внутри самого Android SDK.
Рассмотрим следующую ошибку, которая возникает из-за конфликта версий платформы и Java Development Kit (JDK):
Could not determine java version from '11.0.2'.
Выясним причину. Сборщики мобильных приложений 1С версий 8.3.11–8.3.13 жестко используют под капотом старые версии Gradle (например, 3.3 или 4.6). Эти версии скриптов вшиты в zip-архивы мобильной платформы 1С (такие как prjandroid-arm.zip). Проблема в том, что старые версии Gradle не умеют работать с JDK новее 8-й версии (и совершенно не знают про Java 11).
Самый стабильный способ решения — не пытаться подменить Gradle внутри платформы 1С, а использовать совместимую версию Java:
C:\Java\jdk1.8.0).Иногда процесс сборки обрывается на этапе распаковки служебных файлов Gradle с ошибками вида java.io.FileNotFoundException или Access is denied. Посмотрим на пример лога:
Exception in thread "main" java.io.FileNotFoundException: c:\cache\gradle\wrapper\dists\gradle-3.3-all\...\gradle-3.3-all.zip (The system cannot find the file specified)
...
Exception in thread "main" java.io.FileNotFoundException: c:\cache\gradle\wrapper\dists\gradle-3.3-all\...\docs\userguide\userguide.pdf (Access is denied)
Эта проблема связана с жесткими блокировками файловой системы во время работы платформы. Разберем основные причины и способы устранения:
Access is denied выступает антивирус (очень часто это Касперский), который в реальном времени блокирует доступ к создаваемым zip-архивам и pdf-файлам, считая подозрительной активность java-процесса. Решение: добавьте временную папку кэша Gradle (в примере выше это C:\cache\gradle\) в доверенную зону (исключения) вашего антивируса.Применив описанные выше настройки — используя JDK 1.8, корректно скачав SDK Tools 26-й версии, разместив их в коротких путях и защитив от влияния антивируса — вы сможете успешно и без сбоев компилировать мобильные приложения на платформе 1С.