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代码。
解决方案
若要解决此问题,请完成以下步骤。
- 安装最新版本的适用于 Android 的 Microsoft Intune App Wrapping Tool。
- 为 Android 应用启用 multidex。
测试问题是否已修复。 如果问题仍然存在,请按给定的顺序尝试以下方法:
检查 multidex 配置,查看是否在主 DEX 文件中指定了任何类。 如果将过多的类添加到主 DEX 文件,可能会遇到问题。 有关详细信息,请参阅 https://developer.android.com/studio/build/multidex#keep。
若要解决此问题,请减少在主 DEX 文件中指定的类数。
使用 ProGuard 启用代码收缩。 有关详细信息,请参阅 https://developer.android.com/studio/build/shrink-code#shrink-code。
注意
某些第三方库可能需要其他 ProGuard 配置。
更多信息
有关 DEX 文件的 64K 方法引用限制的详细信息,请参阅 为超过 64K 方法的应用启用 multidex。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。
第三方联系人免责声明
Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈