0

これらのエラーをどのように理解すればよいですか? これは、エラーに関連するすべてのログ cat です。その他はすべて GC タイプのメッセージです。

01-07 19:14:08.536: W/dalvikvm(5780): VFY: register2 v4-5 values 6,24
01-07 19:14:08.536: W/dalvikvm(5780): VFY:  rejecting opcode 0xce at 0x004a
01-07 19:14:08.536: W/dalvikvm(5780): VFY:  rejected Lnz/co/great_ape/headsup/sat_track/SGP4unit_sgp4;.sgp4 (Lnz/co/great_ape/headsup/sat_track/SGP4SatData;D[D[D)Z
01-07 19:14:08.536: W/dalvikvm(5780): Verifier rejected class Lnz/co/great_ape/headsup/sat_track/SGP4unit_sgp4;

私はコードを知っています、それは約400行ですsgp4 satellite tracking software(私のコードではありません)。

このクラスのインスタンスを作成すると問題が発生し (400 行以上)、すべてのコードをコメントアウトし、エラーが返されるまでセクションのコメントを解除するだけで、コードのこのセクションまで問題を追跡しました。

ここの変数はすべて double です。では、なぜAndroidはOP_DIV_DOUBLEやOP_DIV_DOUBLE_2ADDRなどのオペコードでこのコードを拒否するのですか

とにかく、ここにコードのセクションがあります。

            /* -------------- update for short period periodics ------------ */
            if(satrec.method == 'd')
            {
                cosisq = cosip * cosip;
                satrec.con41 = 3.0 * cosisq - 1.0;
                satrec.x1mth2 = 1.0 - cosisq;
                satrec.x7thm1 = 7.0 * cosisq - 1.0;
            }
            mrt = rl * (1.0 - 1.5 * temp2 * betal * satrec.con41) +
                    0.5 * temp1 * satrec.x1mth2 * cos2u;
            su = su - 0.25 * temp2 * satrec.x7thm1 * sin2u;
            xnode = nodep + 1.5 * temp2 * cosip * sin2u;
            xinc = xincp + 1.5 * temp2 * cosip * sinip * cos2u;
            mvt = rdotl - nm * temp1 * satrec.x1mth2 * sin2u / xke;
            rvdot = rvdotl + nm * temp1 * (satrec.x1mth2 * cos2u +
                    1.5 * satrec.con41) / xke;
4

1 に答える 1

0

Ok。コード自体には何も問題はなかったようですが、メソッドの長さと変数の数だけです。メソッドの外でそれらを宣言すると、問題が解決しました。

ここで詳細情報を入手できます:

https://groups.google.com/forum/?fromgroups=#!topic/android-developers/lxiTkNzOvZY

于 2013-01-08T04:11:34.150 に答える