我一直在开发一个应用程序,该应用程序在多个不同的 AR 耳机上运行,这些耳机都运行不同版本的 Android。对于不同的版本,我有几种不同的构建风格:
rej {
compileSdkVersion 'Recon Instruments:Recon Instruments SDK Add-On:16'
applicationId "edu.cnu.nasa.hud.reconjet"
versionName "1.0-rej"
minSdkVersion 16
}
gls {
compileSdkVersion 23
applicationId "edu.cnu.nasa.hud.glass"
versionName "1.0-gls"
minSdkVersion 19
}
vuz_100 {
compileSdkVersion 23
applicationId "edu.cnu.nasa.hud.vuzix_100"
versionName "1.0-vzx_100"
minSdkVersion 15
}
我遇到的问题是使用 GDK 特定类时应用程序崩溃。在任何非 Glass 设备上运行时引发的GestureDetector
原因。java.lang.ExceptionInInitializerError
我不明白为什么,因为我只是在构建风味名称包含时才初始化和使用它"gls"
。
private void addGesturesForGlass(){
if(BUILD_FLAVOR.contains("gls")) {
gestureDetector = new GestureDetector(this);
gestureDetector.setBaseListener(new GestureDetector.BaseListener() {
@Override
public boolean onGesture(Gesture gesture) {
switch (gesture) {
case SWIPE_RIGHT:
//This is a forward swipe
advanceColorShift();
return true;
case SWIPE_LEFT:
//This is a back swipe
return true;
}
return false;
}
});
} else {
gestureDetector = null;
}
}
根据 Logcat 的说法,最终引发错误的异常源自switch(gesture)
线路,但除了 glass 之外的任何设备都无法到达该线路。有没有办法让这个代码以各种方式出现而不会导致错误?