一个构建为两个不同的版本(4.6,4.7和5.0 +以上)的黑莓(One build for two

2019-09-16 22:56发布

我想导入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两者。

请帮忙。

Answer 1:

首先,在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.getSoftwareVersionDeviceInfo.getPlatformVersion

使用这种方法,你也许能有4.6+设备,只有那些5.0+将使用FB SDK兼容的单一的应用程序。

*注意:我不知道为什么,Facebook的黑莓SDK编译为5.0。 也许作者只是用较低的OS他在开发机器有,谁知道。 但是,如果没有测试它,我不能说出它是4.5兼容的,只是罐子是4.5编译。



Answer 2:

该指令名称更改为更多的东西一样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 
        } 
} 


文章来源: One build for two different versions (4.6,4.7 and 5.0+above) in blackberry