coder_szc 2018-12-04 05:07 采纳率: 0%
浏览 904

Andfix报错NotADexFile,如何解决?

跟着网上例子学习下Andfix热修复使用,结果生成补丁包时报错

            org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Invalid magic value: 64 65 78 0a 30 33 37 00
    at org.jf.dexlib2.dexbacked.DexBackedDexFile.verifyMagicAndByteOrder(DexBackedDexFile.java:151)
    at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:70)
    at org.jf.dexlib2.dexbacked.DexBackedDexFile.<init>(DexBackedDexFile.java:96)
    at org.jf.dexlib2.DexFileFactory.loadDexFile(DexFileFactory.java:88)
    at org.jf.dexlib2.DexFileFactory.loadDexFile(DexFileFactory.java:56)
    at com.euler.patch.diff.DexDiffer.diff(DexDiffer.java:19)
    at com.euler.patch.ApkPatch.doPatch(ApkPatch.java:68)
    at com.euler.patch.Main.main(Main.java:97)

            代码地址:
            https://github.com/songzeceng/first/tree/reviewOfLifecycle

            要修复的bug是第88行的int i = 2/0;
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 09:23
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由Java语言中的除法运算引起的。当您尝试将一个整数除以零时,编译器会抛出一个ArithmeticException异常,并且它会返回Integer.MAX_VALUE作为错误码。

    在这个特定的例子中,您试图在计算 i = 2 / 0 的时候,这会导致一个除以零的异常。因此,Android Studio 报告了一个NotADexFile错误。

    要解决这个问题,您可以添加适当的检查来确保除法操作不会导致除以零的情况:

    public class MyApp extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            int i = 2 / 0; // 添加这个检查来防止除以零的操作
        }
    }
    

    这样,在运行此应用时,如果尝试进行除以零的操作,就会触发异常并避免程序崩溃。

    评论

报告相同问题?