Поделиться через


Не удалось упаковать бизнес-приложение

Эта статья решает сообщение об ошибке, возникающее при попытке упаковать бизнес-приложение с помощью средства упаковки приложений Microsoft Intune для Android.

Симптомы

При оболочке бизнес-приложения с помощью средства упаковки приложений Microsoft Intune для Android средство завершается сбоем и вы получаете сообщение об ошибке, похожее на следующее:

DBG [APKTool] Готово каталог кодирования в APK-файл:<путь к .apk>
Подробные журналы WRN можно найти по <пути .apk файла> журнала.
ERR Не удалось упаковать приложение.
org.jf.util.ExceptionWithContext: произошло исключение при записи code_item для имени метода <>
org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:825)
org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:268)
org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:246)
brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:61)
brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:36)
brut.androlib.Androlib.buildSourcesSmali(Androlib.java:417)
brut.androlib.Androlib.buildSources(Androlib.java:348)
brut.androlib.Androlib.build(Androlib.java:300)
com.microsoft.intune.mam.apppackager.utils.APKToolWrapper.encodeAPK(APKToolWrapper.java:172)
com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:111)
com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:213)
com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:57)
org.jf.util.ExceptionWithContext: ошибка при написании инструкции при смещение кода 0x13
org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1098)
org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:821)
org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:268)
org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:246)
brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:61)
brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:36)
brut.androlib.Androlib.buildSourcesSmali(Androlib.java:417)
brut.androlib.Androlib.buildSources(Androlib.java:348)
brut.androlib.Androlib.build(Androlib.java:300)
com.microsoft.intune.mam.apppackager.utils.APKToolWrapper.encodeAPK(APKToolWrapper.java:172)
com.microsoft.intune.mam.apppackager.AppPackager.packageApp(AppPackager.java:111)
com.microsoft.intune.mam.apppackager.PackagerMain.mainInternal(PackagerMain.java:213)
com.microsoft.intune.mam.apppackager.PackagerMain.main(PackagerMain.java:57)
org.jf.util.ExceptionWithContext: unsigned short value out of range: <65536 или значение, превышающее 65536>
org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116)
org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:348)
org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1058)

Причина

Проблема возникает, если бизнес-приложение достигает или почти достигает предела ссылки на метод 64K файлов DEX. В этом сценарии средство упаковки Microsoft Intune не может добавить необходимый код Intune в приложение без превышения этого ограничения.

Решение

Чтобы устранить эту проблему, выполните следующие действия.

  1. Установите последнюю версию средства упаковки приложений Microsoft Intune для Android.
  2. Включите multidex для приложения Android.

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

  • Проверьте конфигурацию multidex, чтобы узнать, указаны ли классы в основном файле DEX. При добавлении слишком большого количества классов в основной файл DEX могут возникнуть проблемы. Дополнительные сведения см. в разделе https://developer.android.com/studio/build/multidex#keep.

    Чтобы обойти эту проблему, уменьшите количество классов, указанных в основном файле DEX.

  • Включите сжатие кода с помощью ProGuard. Дополнительные сведения см. в разделе https://developer.android.com/studio/build/shrink-code#shrink-code.

    Примечание.

    Для некоторых сторонних библиотек может потребоваться дополнительная конфигурация ProGuard.

Дополнительная информация

Дополнительные сведения о ограничении ссылок на метод 64K файлов DEX см. в разделе Enable multidex for apps with over 64K method.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Заявление об отказе от ответственности за контактные данные сторонней организации

Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.