我一直致力于在多个运行不同版本Android的不同AR耳机上运行的应用程序。我有不同版本的几种不同版本:
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)
行,但除了玻璃之外的任何设备都不会达到该行。有没有办法让这些代码以各种方式存在而不会导致错误?