Mobile 针对多个移动设备的单一应用程序构建
可以为多个移动设备(在平台上)进行一个应用程序二进制构建,而不是使用带条件编译的构建脚本为每个设备进行单独构建 特别是,是否可以使用单个BREW应用程序构建实现多个屏幕分辨率Mobile 针对多个移动设备的单一应用程序构建,mobile,brew-framework,brewmp,Mobile,Brew Framework,Brewmp,可以为多个移动设备(在平台上)进行一个应用程序二进制构建,而不是使用带条件编译的构建脚本为每个设备进行单独构建 特别是,是否可以使用单个BREW应用程序构建实现多个屏幕分辨率 请注意,目标是拥有单个二进制构建。如果只需要一个代码库,那么条件编译和智能构建脚本就可以做到这一点。是的,这是可能的,我们在我以前的工作地点就可以做到这一点。但需要做的事情很棘手: 编译为最小公分母BREW版本。1.1版是目前所有手机的基础 您的代码必须能够处理多个分辨率。根据我的经验,检测屏幕宽度和高度的方法适用于所有手
请注意,目标是拥有单个二进制构建。如果只需要一个代码库,那么条件编译和智能构建脚本就可以做到这一点。是的,这是可能的,我们在我以前的工作地点就可以做到这一点。但需要做的事情很棘手:
最后,应用程序越复杂、越高级,就越不可能走这条路。一些设备属性在运行时无法可靠检测(如平台ID),因此需要多个版本。另一个想法可能是根据屏幕尺寸将手机分为2到4个类别,并为其创建版本。这也是一条更快的路线,因为您将能够以更少的复杂性支持所有您想要支持的手机
另一个值得一看的是要在手机上启动的BREW版本。如果说BREW 1.1安装在一台手机上,并且在您的目标市场上只占一小部分,那么支持它是没有意义的。我编写了一个J2ME到BREW的转换,在Javaground上使用。编写多分辨率、单二进制代码是完全可能的。我们有一个设备缺陷数据库,这样它就可以通过平台id检测设备,然后生成一系列标记标记哪些缺陷被标记。例如,大多数(如果不是所有的话)摩托罗拉Brew手机都有一个bug,即来电在您接听来电之前不会中断应用程序,因此我使用TAPI监控来电并生成hideNotify事件(因为我们在模拟Java,尽管生成的代码是纯C++)。我在运行时检查Brew版本,如果是Brew 2而不是Brew 3,则禁用某些API 3D类型的游戏更容易使分辨率独立,因为您可以在软件中进行缩放 此外,还有两个单独的声音API,IMEDIA和ISOUNDPLAYER,ISOUNDPLAYER是较旧的API,在所有设备上都受支持,但没有那么多的设施(您只能使用IMEDIA进行多声道音频)。我创建了一个IMEDIA对象,如果它不能获得IMEDIA对象,它将返回创建一个ISOUNDPLAYER对象 一个完全通用的构建的问题是,在功能上有很大的差异,因此有几个构建是值得的,较旧的设备只有不到1MB的堆(和较小的屏幕大小),然后使用6MB+(176x204到更大) 尽管有些新设备是触摸屏(并且您必须处理指针输入)和旋转屏幕,但Brew确实有一组相当一致的键值(与Java不同) 还有一些老式诺基亚手机使用big-endian模式,这意味着文件与普通mod文件不同(除非您想编写一些非常酷的汇编语言前缀头来解码文件)