0

我一直在开发一个应用程序,该应用程序在多个不同的 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 之外的任何设备都无法到达该线路。有没有办法让这个代码以各种方式出现而不会导致错误?

4

0 回答 0