Процесс сборки мобильного приложения 1С для Android — это многоступенчатая процедура, которая требует идеальной настройки окружения. Малейшее несоответствие версий JDK, SDK или даже длинные пути к файлам могут привести к фатальным ошибкам, которые неочевидны из стандартного лога сборщика. В этой статье мы подробно разберем, почему возникают ошибки вида Error retrieving parent for item, проблемы с версиями Java и как правильно подготовить рабочее место для стабильной компиляции APK-файлов.
Одной из самых распространенных проблем при переходе на новые релизы мобильной платформы (например, с 8.3.8.46 на 8.3.8.52) является ошибка в файлах стилей, таких как appinvite_styles.xml. Ошибка выглядит следующим образом:
error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Material.Light.DialogWhenLarge.NoActionBar'
Проанализируем ситуацию: эта ошибка прямо указывает на то, что компилятор (инструмент aapt из Android SDK) не может найти определение темы Material. Данная тема была введена в Android только начиная с версии API 21 (Android 5.0). Если в вашем SDK установлены только более старые версии (например, API 17 или 19), сборка завершится неудачей.
Рассмотрим по шагам, что нужно сделать:
Часто разработчики сталкиваются с ошибкой: Could not determine java version from '9.0.4'. Это происходит на этапе выполнения сценариев Gradle, которые используются платформой 1С для автоматизации сборки.
Выясним причину: скрипты сборки, зашитые в мобильную платформу 1С версий 8.3.8–8.3.10, создавались в то время, когда стандартом была Java 8. Новые версии Java (9, 11, 17 и выше) изменили формат вывода информации о версии, из-за чего Gradle не может их распознать и аварийно завершает работу.
Для решения этой проблемы выполним следующие действия:
JAVA_HOME указывает на путь к JDK 8 (например, C:\Program Files\Java\jdk1.8.0_161).bin установленной JDK 8 находится в самом начале системной переменной PATH, чтобы сборщик не подхватил другую версию Java.Иногда сборка прерывается сообщением: You have not accepted the license agreements of the following SDK components. Это означает, что вы скачали компоненты SDK, но юридически не подтвердили согласие с условиями использования Google. Сборщик 1С не умеет выводить интерактивное окно для принятия лицензий, поэтому он просто завершает процесс с ошибкой.
Разберем, как исправить это вручную:
tools\bin (например: cd /d C:\Android\sdk\tools\bin).sdkmanager --licenses.y (yes) и подтверждайте клавишей Enter, пока не увидите сообщение All SDK package licenses accepted.Если лог сборки Gradle чист, но 1С выдает ошибку: Ошибка получения информации о файле: {CommonModule.StoredFileManagement.Module(300)}: Отсутствует измерение для объекта..., значит проблема кроется внутри самой информационной базы сборщика или метаданных приложения.
Проанализируем ситуацию и применим следующие методы:
StoredFileManagement возникает, когда в мобильное приложение пытаются передать объекты, не включенные в состав мобильной конфигурации, или если нарушена целостность хранилища файлов.C:\Users\Username\AppData\...), пути к временным ресурсам при сборке могут превысить этот лимит. Рекомендуем перенести SDK и временную папку сборщика в корень диска, например: C:\android-sdk и C:\1c_build_temp.Посмотрим на практический пример успешной настройки окружения для сборки на платформе 8.3.10.84. Опытным путем установлено, что наиболее стабильно процесс проходит при использовании следующих версий инструментов:
Если вы столкнулись с неопределенной ошибкой, всегда проверяйте файл build-android-arm.log, который создается во временной папке сборки. Именно там, в самом конце файла, обычно содержится технический текст ошибки от Gradle или компилятора Java, который поможет локализовать проблему.
Соблюдение этих рекомендаций позволит вам избежать большинства "фантомных" ошибок и сделать процесс выпуска мобильных решений на платформе 1С предсказуемым и быстрым.