1

我想为多个 Android 版本(可能每个版本)制作一个 Android 应用程序我的问题是我想检查应用程序当前运行的 Android 版本是什么,并动态加载一个依赖于版本的类. 这部分应该没问题。

我只是想知道如何在我的 Eclipse 项目中没有编译错误的情况下实现这一点。我的意思是,该项目是为特定目标(1.5、2.1 ...)配置的,因此如果我的项目中的某个类与所选目标不兼容,则会导致错误。

有没有办法导出这些类,即使它们不适合平台(我想过一个单独的库,但又一次:如何在没有编译 pbs 的情况下将这些类编译成一个库?)?这应该没问题,因为在我检查 Android 版本后要求他们加载之前,它们不会被加载。

谢谢!

4

2 回答 2

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()是您将目标作为字符串标识符返回的魔术方法...

于 2010-08-20T12:23:58.940 回答
0

如果您使用最新目标(即 2.2)编译项目,它仍将在 1.5 上运行。

于 2010-08-20T12:23:29.567 回答