我正在为 minSDK 8 和 targetSDK 11 构建。
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="11"/>
我在logcat中得到这个:
WARN/dalvikvm(2114): VFY: rejected Lcom/examplecompany/project/TidalStreams/Data/gTidalStreamsHourlyHW;.<clinit> ()V
WARN/dalvikvm(2114): Verifier rejected class Lcom/digitaliridium/tides/TidalStreams/Data/gTidalStreamsHourlyHW;
在其他几个设备中,我有两个欲望;一个运行 2.2.2,一个运行 2.3.3。
在 2.2.2 上,我java.lang.VerifyError
在这一行得到一个:
public void onCreate(){
...
gTidalStreamsHourlyHW.init();
...
}
这里是init()
方法。这是一个非常普通的类的唯一方法。
public static void init(){
int insertPosition;
System.arraycopy(gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, 0, gTidalStreamHourlyHW1.length);
insertPosition = gTidalStreamHourlyHW1.length;
System.arraycopy(gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, insertPosition, gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1.length);
insertPosition += gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1.length;
System.arraycopy(gTidalStreamsHourlyHW3.gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, insertPosition, gTidalStreamsHourlyHW3.gTidalStreamHourlyHW1.length);
...
gTidalStreamsHourlyHW
是一个大数据数组,大约 350k。我不得不将它拆分为多个文件以绕过 Java 的 64k 编译单元限制。
该init
方法简单地使用 System.arraycopy() 将这些多个静态数组连接成一个。
我尝试将 minSDK 级别降低到 7,但问题是一样的。
它在运行 2.2.2 的模拟器中也失败了。