仅在针对 Android 编译时才编译源代码?



我正在为安卓和PC制作游戏,并且必须导入Android独有的东西以及包含仅适用于Android的代码的编写方法

我希望能够做这样的事情,所以在我为非 android 版本编译的情况下,它不会给出编译错误

boolean android = "The Android Project".equals(System.getProperty("java.specification.vendor"));
void setup(){
if (android)
importAndroid();
//other setup stuff irrelevant to the question
}
void importAndroid(){
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.content.Context;
import android.app.Activity;
}

你不能有条件地导入这样的类。

相反,您应该将同时在桌面和 Java 上运行的代码封装到其自己的类(或多个类(中,您可以将其用作库。然后构建一个桌面应用程序和一个 Android 应用程序,其中包含特定于一个版本的代码。这两个特定于平台的项目都将使用共享代码作为库。

如果需要从共享代码调用特定于平台的代码,请通过接口执行此操作,这样您就不必关心共享代码中特定于平台的代码。像这样:

public interface Printer {
public void print(String s);
}

然后在该接口的实现中实现特定于平台的代码:

public class DesktopPrinter implements Printer {
public void print(String s) {
System.out.println(s);
}
}

public class AndroidPrinter implements Printer {
public void print(String s) {
Log.d("MyApp", s);
}
}

然后在您的处理代码中,您将只使用该接口:

Printer printer;
void setPrinter(Printer printer) {
this.printer = printer;
}
void draw(){
printer.print("in draw");
}

然后在特定于平台的代码中创建这些类的实例,并将其传递到 sketch 类中。

最新更新