我有一个Android应用程序,我开始在sdk 2.2上写,但我的Android手机有1.5版本的android。我必须将我的应用程序无缝降级到1.5。我不完全确定,但我没有使用太多2.2特定的功能。你能告诉我怎么做吗?
答案 0 :(得分:1)
如果您正在使用Eclipse,请将清单的minSdkVersion
和targetSdkVersion
以及项目的设置更改为使用1.5,并且该API版本中不存在的任何内容都将变为错误。
答案 1 :(得分:1)
基本上遵循Jean的上述链接到dev blog并接受这些建议。您将创建一个单独的类,该类为延迟加载正在运行的设备的相应API级别的类。版本中不可用的函数应该处理该用例。
public abstract class StaticAct {
protected static StaticAct INSTANCE = null;
public static StaticAct getInstance() {
final int sdkVersion = Integer.parseInt(Build.VERSION.SDK);
if(INSTANCE==null)
if(sdkVersion < Build.VERSION_CODES.DONUT){
INSTANCE = new CupcakeStaticAct();
}else if (sdkVersion < Build.VERSION_CODES.ECLAIR){
INSTANCE = new DonutStaticAct();
}else if(sdkVersion < Build.VERSION_CODES.FROYO){
INSTANCE = new EclairStaticAct();
}else if(sdkVersion < Build.VERSION_CODES.GINGERBREAD){
INSTANCE = new FroyoStaticAct();
}else{
INSTANCE = new GingerbreadStaticAct();
}
return INSTANCE;
}
// Private constructor prevents instantiation from other classes
protected StaticAct() {}
}
这个抽象类将有一些它定义的抽象方法,如
public abstract boolean enableStrictMode();
可以为每个api级别定义一个类。编辑:这些都是在StaticAct.java文件中定义的私有类。这允许延迟加载正常工作并阻止来自其他类的实例化。
/*
* API Level 3
*/
private static class CupcakeStaticAct extends StaticAct
基类(扩展StaticAct)必须实现StaticAct中定义的所有方法。 如果该方法对于该api级别不可用,则处理该情况,抛出错误或返回false(或完全忽略它)。
@Override
public void enableStrictMode() {
//unavilable in cupcake, do nothing
}
随着您的类在api级别上的增加,他们只需要实现从以前版本更改的方法。因此多点触控API在2.0等严格模式下可用。
答案 2 :(得分:0)
在manifest.xml文件中:
<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
有关详细信息,请参阅here
API level被插入到minSdkVersion,targetSdkVersion和maxSdkVersion字段中(并不是maxSdkVersion已在工具包中弃用,但将在市场上运行)。要概括:
Platform API Level
Android 2.3 9
Android 2.2 8
Android 2.1 7
Android 2.0.1 6
Android 2.0 5
Android 1.6 4
Android 1.5 3
Android 1.1 2
Android 1.0 1