LOB 应用程序无法包装错误

本文解决了尝试使用适用于 Android 的 Microsoft Intune App Wrapping Tool 包装业务线 (LOB) 应用时出现的错误消息。

症状

使用适用于 Android 的 Microsoft Intune App Wrapping Tool包装 LOB 应用时,该工具会崩溃,并且你会收到如下所示的错误消息:

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:超出范围的无符号短值: <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)

原因

如果 LOB 应用达到或接近 DEX 文件的 64K 方法引用限制,则会出现此问题。 在此方案中,Microsoft Intune包装工具无法在不超出此限制的情况下向应用添加必要的Intune代码。

解决方案

若要解决此问题,请完成以下步骤。

  1. 安装最新版本的适用于 Android 的 Microsoft Intune App Wrapping Tool
  2. 为 Android 应用启用 multidex

测试问题是否已修复。 如果问题仍然存在,请按给定的顺序尝试以下方法:

更多信息

有关 DEX 文件的 64K 方法引用限制的详细信息,请参阅 为超过 64K 方法的应用启用 multidex

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

第三方联系人免责声明

Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。