Android 有条件地为不同的目标构建
到目前为止,我一直在为API 14进行构建。我现在正在准备,所以我下载并指定了API7作为我的目标。我有一些编译错误,因为我在API14中使用的一些api在API7中不可用 我想知道我怎样才能把它们放在条件句中。关于以下内容:Android 有条件地为不同的目标构建,android,Android,到目前为止,我一直在为API 14进行构建。我现在正在准备,所以我下载并指定了API7作为我的目标。我有一些编译错误,因为我在API14中使用的一些api在API7中不可用 我想知道我怎样才能把它们放在条件句中。关于以下内容: if (API_14) { if (mTextEdit.isEmpty()) { // Do Something } } else if (API_7){ if (mTextEdit.matches("")) { /
if (API_14)
{
if (mTextEdit.isEmpty()) {
// Do Something
}
} else if (API_7){
if (mTextEdit.matches("")) {
// Do the same thing
}
}
这必须是一个编译时条件开关,否则我的代码甚至无法编译
我以前听说Java不支持预处理器,所以我欢迎关于如何最好地管理我的源代码的建议,我的目标是多个版本
编辑:
我的州列表也有问题:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="true"
android:drawable="@android:color/holo_orange_dark" />
<item android:drawable="@android:color/transparent" />
</selector>
当然,hold_orange_dark在API7中不可用。我也希望能够管理这些功能。您不能执行ifs,否则您将在旧设备上崩溃 您必须使用Java反射来有条件地使用来自较新API的方法
例如:对于您的资源,您可以为不同的平台版本提供支持。因此,您将创建一个Values-v14目录,以拥有使用该API版本中任何内容的任何资源的副本,并创建一个Values目录,以便在默认情况下使用Values,并且仅当设备是版本14时才使用Values-v14 至于以编程方式进行,您可以尝试这样的尝试-
try {
//Insert ICS stuff here
} catch(NoSuchMethodError e){
}
或者你可以试试这个-
public static boolean isHoneycomb() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}