如果从未使用过它的功能,是否需要appcompat?

时间:2014-02-09 22:30:54

标签: android classloader dalvik android-appcompat

我知道appcompat库为在早期版本的Android下运行的应用程序提供了比应用程序目标级别更多的功能。我的问题是,如果我在设备上检测到早期版本的Android,如果我从不调用任何方法,是否需要包含appcompat库。换句话说,appcompat库是否有后续类的存根以防止Dalvik动态类加载器崩溃,或者如果没有动态引用这些类,那么它们是不需要的吗?

// Will Android/Dalvik barf if this class is loaded on a pre-Honeycomb device?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {        
    ActionBar actionBar = getActionBar();
}

1 个答案:

答案 0 :(得分:2)

  

我的问题是,如果我在设备上检测到早期版本的Android,如果我从不调用任何方法,是否需要包含appcompat库。

不,那么你就不会需要了。 appcompat库不仅仅是ActionBar的后端口。它还包括一些比Gingerbread更新的平台的小修补程序。 Here就是一个例子。正如您所看到的,Appcompat ActionBar的{​​{3}},HCICS的ActionBar实现都来自基础实现。但一般情况下,如果您在早期版本中未使用ActionBar,则不需要它。 ActionBar足够稳定,使用appcompat库为更高版本创建的修补程序不是很重要。

如果你在Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB中包装一些内容,那么保证不会在HoneyComb之前的版本中调用它,所以不,你可以继续为API执行此操作,稍后介绍的不会破坏早期版本。