0

我如何理解这些错误?这是与错误相关的所有日志猫。所有其他都是 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 多行)时触发了这个问题,我通过简单地注释掉所有代码,然后取消注释部分直到错误返回,将问题跟踪到这部分代码,

这里的所有变量都是双精度数。那么,为什么 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

行。这样的代码似乎从来没有任何问题,只是方法的长度和变量的数量。在方法之外声明它们解决了这个问题。

您可以在此处获取更多信息:

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

于 2013-01-08T04:11:34.150 回答