我正在构建一个 Android 应用程序。现在,我有一个 API #1 的源代码,我应该让它适应 API #2。然后我将在不同的包中发布 API #1 和 API #2 的两个版本。我不能使用 values-en 之类的东西,因为这两个版本都可以在全球范围内使用。此外,用户可能没有选择。
由于新版本将使用相同的 UI 和 DB 逻辑,(并且因为现在代码是错误的,)我不想分离代码。如果我使用 c 或 c++ 进行编码,我必须使用 #ifdef 和 Makefile。但是,我在 Java 中。可以通过在运行时确定包名来运行依赖 API 的代码,但这有点奇怪。
我想我可以使用注释。我期望的是:
package foo.app;
public class API {
public boolean prepare() { ... }
@TargetPlatform(1)
public void open() { ... }
@TargetPlatform(2)
public void open() { ... }
}
并且只使用其中之一。另外,这很好:
package foo.app;
public class R {
@TargetPlatform(1) com.example.foo.app.R R;
@TargetPlatform(2) net.example.foo.app.R R;
}
仅仅定义一个注解很简单。我不知道的是,如何从构建或执行中排除未使用的重复项,等等?如果工作能以这种方式完成,我可以做任何事情。