Компиляция библиотек для разных версий Android
Я работал над приложением, которое работает на нескольких гарнитурах 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. GestureDetector
причины java.lang.ExceptionInInitializerError
быть брошенным при работе на любом устройстве, которое не Glass. Я не могу понять, почему, так как я только инициализирую и использую его, когда имя фреймворка содержит "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)
линия, но эта линия никогда не достигается на любом устройстве, кроме стекла. Есть ли способ, чтобы этот код присутствовал во всех вариантах, не вызывая ошибку?