Google Glass GDK向后兼容?

时间:2014-09-09 04:34:05

标签: google-gdk

我刚刚在我的玻璃XE 20.1上尝试了更新的gdk,我的测试应用程序崩溃了,因为新的api不可用。

CardBuilder card = new CardBuilder(this, CardBuilder.Layout.TEXT);

(旧的Card构造函数已弃用.Builder模式正在替换它。)

日志:

09-09 00:27:16.239    1992-1992/com.prat.testgdk E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.prat.testgdk, PID: 1992
java.lang.NoClassDefFoundError: com.google.android.glass.widget.CardBuilder
        at com.prat.testgdk.MainActivity.buildView(MainActivity.java:95)
        at com.prat.testgdk.MainActivity.onCreate(MainActivity.java:40)

在其他Android设备上,我可以检查android.os.Build.VERSION.SDK_INT或设置minSdkVersion,但是当新的sdk出来时,Glass SDK_INT将不会更新。

处理这个问题的正确方法是什么?有没有比使用反射来测试特定类的可用性更好的方法?

我错过了什么吗?

修改

基于API演示,似乎我们不应该关心。让它打破旧的XE。希望所有眼镜都很快得到更新。 请参阅https://github.com/googleglass/gdk-apidemo-sample/commit/e644c7325bb74a02b0f383bf9f19e9f851313dc2

3 个答案:

答案 0 :(得分:2)

现在,我使用反思......可能:

private View buildView() {
    try {
        String cardBuilderName = "com.google.android.glass.widget.CardBuilder";
        Class clazz = Class.forName(cardBuilderName);
        CardBuilder cardBuilder = new CardBuilder(this, CardBuilder.Layout.TEXT);
        cardBuilder.setText(R.string.hello_world);
        return cardBuilder.getView();
    } catch (Exception e) {
        //ClassNotFoundException?
        Log.v(TAG, e.toString());
        Card card = new Card(this);
        card.setText(R.string.hello_world);
        return card.getView();
    }        
}

注意:我没有在旧的XE上进行过测试,因为我已经刷过了XE 21。

但这很难看。希望我们有更好的方法来解决这个问题。

答案 1 :(得分:1)

您使用的是XE21.0还是XE20.1?如果您使用的是XE20.1,则CardBuilder不可用。随着XE21.0本周开始推出,您需要等到本周某个时候更新设备。

在检查Glass的运行时版本方面,当前的设置肯定不是很好。一般情况下,即使GDK类被弃用,它们也将在未来的版本中大部分可用,以免破坏向后兼容性。因此,对于更多版本,您可能最好不要使用旧的API,即使它已被弃用。

据说,除了使用反射之外,您还可以检查增量构建版本(http://developer.android.com/reference/android/os/Build.VERSION.html#INCREMENTAL)。这应该与XE版本进行1:1映射,但不会公布每个版本的增量版本(您必须尝试找到这个)。

答案 2 :(得分:-1)

由于Google Glass仍处于“测试版”状态,因此无论何时发布新版本,我们都需要升级到当前的GDK版本。新版本几乎每月发布一次。

我希望一旦谷歌眼镜以公开形式发布,可能会支持“最低版本号”......但谷歌尚未发布该声明。

所以..随着GDK的每个版本的发布(以及补丁纠正问题或添加功能)密切关注变化,以便您(以及我们其他人)可以保留我们新生的Glassware(或“bo”玻璃器皿)将继续运行。)