次の方法で共有


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。メイン(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。メイン(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 を有効にします

問題が修正されているかどうかをテストします。 問題が解決しない場合は、指定した順序で次のメソッドを試してください。

  • 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 を超えるメソッドを使用してアプリのマルチデックスを有効にする」を参照してください。

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

サードパーティのお問い合わせ窓口に関する免責事項

Microsoft では、このトピックに関する追加情報を見つけるのに役立つサード パーティの連絡先情報を提供しています。 将来予告なしに変更されることがあります。 Microsoft は、第三者の連絡先情報の正確性を保証しません。