これらのエラーをどのように理解すればよいですか? これは、エラーに関連するすべてのログ 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;