0

Soot を使用して apk ファイルを計測しています。soot.Main を実行する前に次のステートメントを追加すると (ボディ トランスフォーマーを作成することさえせずに)、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)

前もって感謝します。

4

1 に答える 1

0

私の問題は、追加しようとしたクラスコードが原因でした。これは本当に微妙な点です。私は "Long" の ArrayList を使用していますが、私のメソッドのいくつかは "long" 型の変数を追加/削除していました。Java はボクシングを実行し、Java コードの実行に問題はありませんでしたが、中間言語ではこのような不一致が問題になります。

于 2014-06-19T18:25:45.257 に答える