При сборке мобильного приложения на платформе 1С:Предприятие разработчики часто сталкиваются с критической ошибкой Could not determine java version from '10.0.1' (или любой другой версии выше 8). Эта проблема полностью блокирует процесс создания apk-файла и может поставить в тупик, особенно если вы используете актуальные версии Java JDK. В этой статье мы подробно разберем причины возникновения этой ситуации, рассмотрим пошаговое решение и изучим сопутствующие проблемы, возникающие при настройке среды сборки.
Для начала проанализируем ситуацию. Ошибка Could not determine java version генерируется не самой платформой 1С, а системой автоматизации сборки Gradle, которая встроена в «Сборщик мобильных приложений». В версиях платформы 1С 8.3.12 и близких к ней используется Gradle версии 3.3 или аналогичные старые ветки.
Важно понимать, что версии Gradle имеют жесткие ограничения по совместимости с Java:
Посмотрим на пример из лога: Путь к Java: C:\Program Files\Java\jdk-10.0.1. Именно эта строка указывает на источник проблемы. Несмотря на то, что Java 10 более современная, для инструментов сборки того периода она является «неизвестным объектом».
Выясним, как правильно настроить среду. Первым делом необходимо скачать и установить Java Development Kit (JDK) 8. Рекомендуется использовать официальный дистрибутив от Oracle или OpenJDK.
Рассмотрим важные нюансы при установке:
C:\Program Files\Java\jdk1.8.0_xxx установите JDK в корень диска, например, C:\Java\jdk1.8. Это поможет избежать проблем с парсингом путей в командных файлах .bat.gradlew.bat, иногда помогает использование 32-битной версии JDK 8.JAVA_HOME указывает именно на папку с JDK 8.После смены версии Java вы можете столкнуться со следующей ошибкой: NDK is missing a platforms directory. Проанализируем, почему это происходит. Если вы устанавливали Android SDK через Android Studio, она могла автоматически создать пустую папку ndk-bundle внутри каталога SDK.
Сборщик 1С при поиске инструментов видит эту папку и пытается задействовать компоненты NDK. Так как папка пуста, процесс прерывается с ошибкой. Разберем варианты решения:
ndk-bundle из вашего каталога Android SDK (например, из D:\Android\SDK\ndk-bundle). После удаления сборщик проигнорирует NDK и продолжит сборку обычного Java-кода.Еще одна типичная проблема, видимая в логах: Could not find common.jar (android.arch.core:common:1.1.0). Ошибка возникает при попытке скачать необходимые зависимости из репозиториев.
Выясним причину: большинство старых конфигураций Gradle в 1С настроены на репозиторий JCenter. С 2021 года этот репозиторий перешел в режим «только чтение» и перестал обновляться, а многие библиотеки переехали в Google Maven. Чтобы решить это, рассмотрим алгоритм правки конфигурации:
Рабочий каталог (и кеш)).build.gradle.repositories добавьте строку google() перед jcenter().Пример правильной структуры репозиториев в коде:
allprojects {
repositories {
google()
jcenter()
maven { url "https://maven.google.com" }
}
}
Проанализируем опыт разработчиков, упомянутый в обсуждении. Не все версии мобильной платформы одинаково стабильны. Например, в версии 8.3.12.67 были замечены проблемы с передачей двоичных данных в POST-запросах. Если ваше приложение активно работает с веб-сервисами, рекомендуется использовать версию 8.3.12.60 или откатиться на 8.3.12.46.
Также стоит учитывать следующие особенности:
Для минимизации ошибок при сборке мобильных приложений 1С на ОС Windows 10/11, придерживайтесь следующих правил:
C:\1C_Mobile_Build\temp.gradlew.bat.temp), иначе Gradle может попытаться использовать битые или недокачанные артефакты.Соблюдение этих инструкций и использование Java 8 гарантирует успешную сборку мобильного приложения и избавляет от большинства ошибок, связанных с инструментарием Android SDK и Gradle.