Как исправить ошибку сборки мобильного приложения 1С «Could not determine java version from '10.0.1'»

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При сборке мобильного приложения на платформе 1С:Предприятие разработчики часто сталкиваются с ошибками на этапе выполнения скриптов сборки. Одной из наиболее распространенных проблем является несовместимость версий установленного Java Development Kit (JDK) и инструментов автоматизации сборки Gradle, которые используются внутри сборщика 1С. В данной статье мы подробно разберем, почему возникает ошибка Could not determine java version, и как правильно настроить окружение для успешного получения APK-файла.

Анализ основной причины ошибки Java

Рассмотрим ситуацию: при запуске сборки в логе появляется сообщение FAILURE: Build failed with an exception. * What went wrong: Could not determine java version from '10.0.1'.. Эта ошибка возникает не в самой платформе 1С, а в утилите Gradle, которая управляет процессом компиляции Android-приложения.

Дело в том, что старые версии сборщика мобильных приложений 1С (например, версии 2.0.7) используют Gradle версии 3.3 или аналогичные. В этих версиях Gradle алгоритм определения версии Java жестко завязан на формат вывода номера версии. Когда Java изменила схему именования (переход от формата 1.8 к формату 9, 10, 11), старый Gradle перестал понимать, какая версия JDK установлена в системе, и выдает ошибку.

Важный технический нюанс: начиная с Java 9, многие библиотеки (например, JAXB, ответственный за работу с XML) были вынесены в отдельные модули или помечены как устаревшие. Ошибка javax/xml/bind/annotation/XmlSchema, которая часто следует за проблемами с версией Java, прямо указывает на то, что Gradle пытается найти нужные классы в составе JDK, но в новых версиях Java их больше нет «из коробки». Единственным стабильным решением для сборщиков 1С тех лет является использование Java 8 (JDK 1.8).

Шаг 1: Установка и настройка корректной версии JDK

Проанализируем последовательность действий для исправления ситуации с Java:

  1. Удалим (или временно отключим) Java версий 9, 10, 11 и выше.
  2. Установим JDK 8 (Java SE Development Kit 8uXXX). Рекомендуется использовать 32-битную или 64-битную версию в зависимости от разрядности вашей операционной системы, но для 1С 8.3.12 и старше чаще советуют 32-битную (x86).
  3. Проверим системные переменные окружения. Переменная JAVA_HOME должна указывать строго на каталог установки JDK 8. Например: C:\Program Files\Java\jdk1.8.0_202.
  4. Убедимся, что путь к bin каталогу Java 8 стоит выше в списке переменной Path, чем любые другие упоминания Java.

После смены версии Java обязательно перезапустите сборщик мобильных приложений 1С, чтобы он подхватил новые пути.

Шаг 2: Решение проблем с Android NDK

Иногда после исправления ошибки с Java появляется предупреждение: NDK is missing a "platforms" directory. Выясним причину этого поведения. Современные версии Android NDK (начиная с версии r17) изменили внутреннюю структуру папок, удалив подкаталог platforms. Сборщик 1С, ожидая старую структуру, выдает ошибку конфигурации проекта.

Если ваше мобильное приложение не использует внешние компоненты, написанные на C++, вы можете просто очистить путь к NDK в настройках сборщика 1С. В большинстве случаев для типовых задач (бизнес-приложения на управляемых формах) NDK вообще не требуется. Если же он необходим, скачайте старую версию NDK (например, r16b или r10e) и укажите путь к ней.

Шаг 3: Настройка Android SDK и отсутствующих библиотек

Разберем ситуацию, когда возникает ошибка Could not find common.jar (android.arch.core:common:1.1.0). Это означает, что Gradle не может найти необходимые библиотеки поддержки Android локально в вашем SDK.

Для решения этой проблемы выполним следующие действия в Android SDK Manager:

  1. Проверим наличие установленного компонента Android Support Repository и Google Repository в разделе Extras. Именно там хранятся локальные копии библиотек .jar и .aar.
  2. Убедимся, что установлены Build-Tools именно той версии, которая запрашивается платформой (в логе из примера это API Level 27). Рекомендуется иметь установленными Build-Tools версий 27.0.3 или 28.0.3.
  3. Если используется API Level 27, убедитесь, что в SDK скачан соответствующий пакет SDK Platform для Android 8.1.

Итоговые рекомендации по конфигурации

Проанализировав опыт успешных сборок, можно выделить «золотой стандарт» окружения для платформы 1С версии 8.3.12 и сборщика 2.0.7:

Посмотрим на пример правильно настроенных путей в системных переменных, которые гарантируют стабильную работу сборщика:


JAVA_HOME = C:\Program Files (x86)\Java\jdk1.8.0_144
ANDROID_HOME = D:\Android-SDK
Path = %JAVA_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;...

Важное замечание по путям: Старайтесь избегать пробелов в путях к SDK и JDK. Несмотря на то что современные системы их поддерживают, скрипты make.bat и gradlew.bat, генерируемые 1С, могут некорректно обрабатывать пути вида C:\Program Files\.... По возможности устанавливайте инструменты в корневые папки без пробелов, например C:\Java8\ или D:\AndroidSDK\.

Таким образом, успех сборки мобильного приложения 1С зависит не от «новизны» софта, а от строгого соблюдения совместимости версий. Использование Java 8 является критически важным условием для работы внутреннего инструментария Gradle в старых и средних версиях платформы 1С.

← На главную