При попытке выгрузить готовое мобильное приложение (APK) с помощью инструмента Сборщик мобильных приложений разберем частую проблему: процесс сборки завершается с ошибками, а выгруженный архив содержит только каталог Logs без самого файла .apk.
Проанализируем причины возникновения подобного сбоя, изучим лог-файл сборщика и рассмотрим пошаговое решение проблемы.
Обратимся к журналу сборки, который формирует Apache Ant. В большинстве случаев сбой происходит на самом финальном этапе — этапе подписи готового пакета приложения -release-sign. В логе это выглядит следующим образом:
[info] Начинается сборка
...
-release-sign:
[echo] Signing final apk...
BUILD FAILED
D:\Mobail\android-sdk\tools\ant\build.xml:1135: The following error occurred while executing this line:
D:\Mobail\android-sdk\tools\ant\build.xml:1147: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder
at com.android.sdklib.internal.build.SignedJarBuilder.<init>(SignedJarBuilder.java:177)
at com.android.ant.SignApkTask.createOutput(SignApkTask.java:72)
...
Caused by: java.lang.ClassNotFoundException: sun/misc/BASE64Encoder
Как видно из приведенного журнала, инструмент SignApkTask из состава Android SDK Tools обращается к внутреннему классу sun.misc.BASE64Encoder среды исполнения Java, однако этот класс не находится в системе.
Рассмотрим подробно, почему возникает исключение java.lang.ClassNotFoundException: sun/misc/BASE64Encoder.
Утилиты подписи APK в старых версиях Android SDK (использующие цепочку вызовов Apache Ant и apkbuilder) опираются на внутренние служебные библиотеки Oracle Java. Начиная с релизов **JDK 9** и выше, внутренний пакет sun.misc был полностью удален и инкапсулирован в рамках модульной системы Java (Project Jigsaw).
Если в системе или настройки сборщика указывают на установленный **JDK 9**, **JDK 10**, **JDK 11** или более свежую версию, процедура подписи мобильного приложения 1С завершится фатальной ошибкой.
Разберем алгоритм действий, который позволяет успешно собрать и подписать APK-файл.
JDK 9.0.1 и выше).jdk-8u151-windows-x64 или аналогичный актуальный апдейт JDK 8).C:\Program Files\Java\jdk1.8.0_151).Чтобы избежать ошибок при компиляции мобильных приложений 1С, соблюдайте основные правила настройки рабочей среды:
1. Соблюдение матрицы совместимости компонентов: Сборщик мобильных приложений старых версий строго привязан к комбинации JDK 8 (1.8) + Apache Ant 1.9+ + Android SDK Tools 25.2.5 (API Level 23 или требуемый платформой).
2. Проверка корректности путей: Убедитесь, что пути к папкам **Android SDK**, **Apache Ant** и **JDK** не содержат пробелов и кириллических символов.
3. Проверка ключа цифровой подписи: Для подписи приложения в сборщике должен быть создан или указан валидный ключ разработчика (хранилище ключей .keystore или .jks).
После перехода на **JDK 8** этап -release-sign пройдет успешно, и архив сборки сформирует полноценный установочный файл `.apk` вашего мобильного приложения 1С.