我想为多个Android版本(可能是其中每个版本)制作一个Android应用 我的问题是我想检查当前运行的应用程序的Android版本是什么,并动态加载一个版本相关的类。这部分应该没问题。
我只是想知道如何在Eclipse项目中没有编译错误的情况下实现这一点。 我的意思是,项目是针对特定目标(1.5,2.1 ...)配置的,因此如果我的项目中的某个类与所选目标不兼容,则会导致错误。
有没有办法导出这个类,即使它们不适合平台(我想到了一个单独的lib,但是又一次:如何在没有编译pbs的情况下将这些类编译成lib?)?这应该没问题,因为在我检查Android版本之后我们才会加载它们。
谢谢!
答案 0 :(得分:0)
如果您使用最新目标编译项目,即2.2,它仍将在1.5上运行。
答案 1 :(得分:0)
您可以根据不同的条件使用Class.forName
加载不同的类:
public interface MyType {}
public class MyTypeOn15 implements MyType {}
public class MyTypeOn16 implements MyType {}
public class MyTypeOn20 implements MyType {}
// ...
以及代码中的其他位置:
MyType myType = null;
if (getActualTarget().equals("1.5") {
myType = Class.forName("MyTypeOn15").newInstance();
} else if (getActualTarget().equals("1.6") {
myType = Class.forName("MyTypeOn16").newInstance();
} // ...
请注意,您的实现中需要一个可访问的空构造函数。而getActualTarget()
是你的魔术方法,它将目标作为字符串标识符返回......