Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья решает сообщение об ошибке, возникающее при попытке упаковать бизнес-приложение с помощью средства упаковки приложений 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 в приложение без превышения этого ограничения.
Решение
Чтобы устранить эту проблему, выполните следующие действия.
- Установите последнюю версию средства упаковки приложений Microsoft Intune для Android.
- Включите 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 не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Заявление об отказе от ответственности за контактные данные сторонней организации
Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.