【问题标题】:Google Glass GDK backward compatibility?Google Glass GDK 向后兼容?
【发布时间】:2014-09-09 04:34:05
【问题描述】:

我刚刚在 Glass 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,但在 Glass 上,SDK_INT 不会在新 sdk 出现时更新。

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

我错过了什么吗?

编辑:

基于 API 演示,似乎我们不应该关心。让它在旧的 XE 上崩溃。希望所有眼镜都能尽快更新。 https://github.com/googleglass/gdk-apidemo-sample/commit/e644c7325bb74a02b0f383bf9f19e9f851313dc2

【问题讨论】:

    标签: google-gdk


    【解决方案1】:

    现在,我会使用反射...可能:

    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。

    但这很丑。希望我们有更好的方法来处理这个问题。

    【讨论】:

      【解决方案2】:

      您使用的是 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 的映射关系,尽管它没有宣传每个版本的增量版本是什么(您必须通过试验才能找到它)。

      【讨论】:

        【解决方案3】:

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

        我预计,一旦 Google Glass 以公开形式发布,“最低 sdk 版本”可能会得到支持……但 Google 尚未宣布这一消息。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-28
          • 1970-01-01
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多