我想为黑莓 5.0 及更高版本导入 facebook 库,但不想为 4.6 和 4.7 导入这些库。
我尝试通过以下链接使用 4.7 及更高版本的预处理器: http://smartfone-more.blogspot.in/2010/05/coding-for-multiple-blackberry-devices.html
现在它在 JDE 4.7 上工作正常,但在 5.0 上没有得到预期的结果。 请在下面找到我尝试过的代码:
//#ifdef JDE_4_7_0
import net.rim.device.api.ui.component.ButtonField;
//#else
import net.rim.device.api.ui.component.LabelField;
//#endif
import net.rim.device.api.ui.container.MainScreen;
public class TestScreen extends MainScreen{
TestScreen(){
//#ifdef JDE_4_7_0
ButtonField btn = new ButtonField("Test Button");
add(btn);
//#else
LabelField lbl1 = new LabelField("Test Label 1");
add(lbl1);
//#endif
}
}
根据代码,我期望在 else 部分写入 5.0 的结果,在 if 部分写入 4.7。 我在设备和 JDE 上都检查了它。
请帮助。
最佳答案
首先,JDE_4_7_0
标签是您应该在 BlackBerry 项目属性 -> “编译”选项卡 -> 预处理器定义中定义的自定义标签。你可以给它起你想要的名字。
其次,在您的源文件中,第一行(甚至在包声明之前)应该是:
//#preprocess
然后,当您想禁用条件导入时,返回“预处理器定义”选项卡并删除 JDE_4_7_0
条目。这将使编译器进入 #else
子句。 eclipse的BB插件不检测操作系统,都是你应该控制的 Artifact 。
编辑:
您将以两组可交付成果结束,一组用于 5.0+,另一组用于 4.x。 BBant 工具允许您一步执行编译过程,但编译的结果将是相同的。或者,您可以:
- 尝试在 4.6 项目中包含 FacebookBlackBerrySDK-vx.x.x.jar 和 Log4B-vx.x.x.jar(确保这些已预先验证)。我能够包含这些 jars 并编译一个 4.5 项目,但这并不意味着您可以毫无错误地使用它们*。所以……
- 仅在 OS 5.0 及更高版本中使用 facebook 功能,方法是在运行时使用
DeviceInfo.getSoftwareVersion
或DeviceInfo.getPlatformVersion
进行检测。
使用这种方法,您可能能够拥有一个与 4.6+ 设备兼容的应用程序,并且只有 5.0+ 设备会使用 fb sdk。
*注意:我不知道为什么 facebook blackberry sdk 是为 5.0 编译的。也许作者只是在他的开发机器中使用了较低的操作系统,谁知道呢。但是如果不测试它,我不能说它是 4.5 兼容的,只是这个 jar 是 4.5 可编译的。
关于java - 黑莓中两个不同版本(4.6、4.7 和 5.0+ 以上)的一个构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399216/