我想导入Facebook的库黑莓5.0以上,并且不希望导入这些库为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
}
}
按代码我期待写在其他部分为5.0,如果部分为4.7的结果。 我检查了它的设备以及JDE两者。
请帮忙。
首先,在JDE_4_7_0
标签是你应该在黑莓项目属性自定义一个标签- >“编译”选项卡- >预处理器定义。 你可以给它想要的名字。
其次,在源文件中,第一行(甚至包声明前)应为:
//#preprocess
然后,当您希望禁用有条件进口,回到“预处理器定义”选项卡,去除JDE_4_7_0
条目。 这将使编译器进入#else
子句。 该BB Eclipse插件没有检测到操作系统,它是所有你应该控制的假象。
编辑:
你会用两套交付,一个为5.0以上,另一个用于4.x的结束 BBant工具允许您在一个步骤执行编译过程,但编制的产品将是相同的。 作为替代方案,您可以:
- 尝试包括在4.6项目FacebookBlackBerrySDK-vx.xxjar和Log4B-vx.xxjar(可以肯定这些预验证)。 我能包括这些罐子和编译一个4.5的项目,但它并不意味着你可以没有任何错误使用它们*。 所以...
- 仅在OS 5.0及以上使用Facebook功能,通过在与运行时检测它
DeviceInfo.getSoftwareVersion
或DeviceInfo.getPlatformVersion
。
使用这种方法,你也许能有4.6+设备,只有那些5.0+将使用FB SDK兼容的单一的应用程序。
*注意:我不知道为什么,Facebook的黑莓SDK编译为5.0。 也许作者只是用较低的OS他在开发机器有,谁知道。 但是,如果没有测试它,我不能说出它是4.5兼容的,只是罐子是4.5编译。
该指令名称更改为更多的东西一样JDE_4_7_0_OR_HIGHER
,然后进入你的项目的Blackberry_App_Descriptor.xml文件,并添加JDE_4_7_0_OR_HIGHER
的“预处理指令”列表中,并确保当你用JRE版本是4.7或编译项目已启用更高(可以安装多个JRE和编译,然后选择之前在项目选项中指定一个)。 然后,你的代码看起来就像这样:
//#preprocess
//#ifdef JDE_4_7_0_OR_HIGHER
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_OR_HIGHER
ButtonField btn = new ButtonField("Test Button");
add(btn);
//#else
LabelField lbl1 = new LabelField("Test Label 1");
add(lbl1);
//#endif
}
}