为不同版本的Android编译库

时间:2016-07-07 14:20:50

标签: android google-glass augmented-reality vuzix

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

0 个答案:

没有答案