Ошибка повторного подсчета при настройке apk с помощью soot

#android #instrumentation #soot

#Android #инструментарий #soot

Вопрос:

Я настраиваю файл apk с помощью Soot. Когда я добавляю следующее утверждение перед запуском soot.Main (даже не создавая мой body transformer), я получаю ошибку regCount. (Одна и та же ошибка появляется в разных методах для разных файлов apk.)

     Scene.v().addBasicClass("MyScheduler");
    // PackManager.v().getPack("jtp").add(new Transform("jtp.myInstrumenter", new MyBodyTransformer()));
    soot.Main.main(args);
 

Ошибка, которую я получаю,:

     Transforming android.support.v4.view.ViewConfigurationCompat$FroyoViewConfigurationVersionImpl... 
    Exception in thread "main" java.lang.RuntimeException: regCount does not match the number of arguments of the method
       at org.jf.dexlib.Code.Format.Instruction35c.checkItem(Instruction35c.java:160)
       at org.jf.dexlib.Code.Format.Instruction35c.<init>(Instruction35c.java:69)
       at soot.toDex.instructions.Insn35c.getRealInsn0(Insn35c.java:96)
 

Заранее спасибо.

Ответ №1:

Моя проблема была вызвана моим кодом класса, который я пытался добавить. Это действительно тонкий момент: я использую ArrayList «Long»s, но некоторые из моих методов добавляли / удаляли переменные типа «long». Хотя Java выполняет боксирование, и у меня не было проблем с выполнением кода Java, такое несоответствие проблематично на промежуточных языках.