Android應(yīng)用移植到OPhone平臺(tái)指南
1.1 概述
OPhone平臺(tái)基于Linux和開(kāi)放手機(jī)聯(lián)盟(OHA)的Android系統(tǒng),經(jīng)過(guò)中國(guó)移動(dòng)的創(chuàng)新研發(fā),設(shè)計(jì)出擁有新穎獨(dú)特的用戶(hù)操作界面,增強(qiáng)了瀏覽器能力和WAP兼容性,優(yōu)化了多媒體領(lǐng)域的OpenCORE、瀏覽器領(lǐng)域的WebKit等業(yè)內(nèi)眾多知名引擎,增加了包括游戲、Widget、Java ME等在內(nèi)的先進(jìn)平臺(tái)中間件。
本文重點(diǎn)介紹OPhone和Android應(yīng)用開(kāi)發(fā)的差異,為OPhone和Android開(kāi)發(fā)者提供指導(dǎo).
1.2 兼容性
目前,OPhone共發(fā)布了1.0和1.5兩個(gè)平臺(tái)版本,其中OPhone 1.0與Android 1.0兼容,OPhone 1.5與Android 1.5兼容。由于Android 1.5與Android 1.0不兼容,因此OPhone 1.5與OPhone 1.0不兼容。Android 1.0 API和Android 1.5 API變化比較大,是導(dǎo)致OPhone 1.0和OPhone 1.5之間差異的主要原因。
Android CTS (Compatibility Test Suite)是Google提供的Android兼容性測(cè)試工具。CTS共有2萬(wàn)多個(gè)測(cè)試用例,OPhone取得了很好的CTS測(cè)試結(jié)果:CTS測(cè)試通過(guò)率:99.96%。Android Market排名前270的應(yīng)用(2009年10月)有超過(guò)80%的可以直接在OPhone平臺(tái)上運(yùn)行。部分應(yīng)用移植失敗的原因主要有:
OPhone不支持Google Maps庫(kù)
硬件方面的差異:顯示分辨率、傳感器、和硬件相關(guān)的特殊庫(kù)
Tabview的UI顯示
1.3 OPhone API
OPhone SDK在兼容Android API的基礎(chǔ)上還提供了OPhone API,來(lái)擴(kuò)展OPhone平臺(tái)的能力。如果應(yīng)用程序使用了OPhone API,則此程序無(wú)法移植到Android系統(tǒng)。關(guān)于OPhone API的使用,請(qǐng)參考OPhone開(kāi)發(fā)者社區(qū)的文檔(http://www.ophonesdn.com/documentation/)。#t#
OPhone SDK 1.0提供了如下OPhone API:
Home Screen API
Local Search API
Mail API
OPhone SDK 1.5提供了如下OPhone API:
AGPS API
Video Telephony API
Home Screen API
Local Search API
1.4 應(yīng)用程序模型
OPhone平臺(tái)除了支持APK應(yīng)用程序開(kāi)發(fā)之外,還支持Mobile Widget和Java ME應(yīng)用程序開(kāi)發(fā)。
Mobile Widget 應(yīng)用是采用HTML、JavaScript和CSS等網(wǎng)絡(luò)技術(shù)開(kāi)發(fā)的應(yīng)用程序。在OPhone中,Mobile Widget應(yīng)用遵循的是聯(lián)合創(chuàng)新實(shí)驗(yàn)室(Joint Innovation Lab, JIL) 的JIL Widget 規(guī)范。詳細(xì)信息請(qǐng)參考如下網(wǎng)址:
Ophone平臺(tái)支持Java ME應(yīng)用程序(MIDlet)的開(kāi)發(fā),目前OPhone 1.5上實(shí)現(xiàn)了中國(guó)移動(dòng)Java 4.1規(guī)范。
1.5 應(yīng)用程序開(kāi)發(fā)的差異
1.5.1 網(wǎng)絡(luò)數(shù)據(jù)連接的方法
OPhone與Android建立網(wǎng)絡(luò)數(shù)據(jù)連接的方法有所不同。OPhone 平臺(tái)實(shí)現(xiàn)了多個(gè)應(yīng)用程序?qū)Ψ纸M數(shù)據(jù)復(fù)用的功能,不同的應(yīng)用可以根據(jù)自身需要,打開(kāi)不同的網(wǎng)絡(luò)連接,通過(guò)這種方式我們可以在不同的OPhone應(yīng)用中同時(shí)進(jìn)行諸如瀏覽網(wǎng)頁(yè)、接受彩信、發(fā)送郵件這樣的網(wǎng)絡(luò)任務(wù)。
關(guān)于如何在OPhone中實(shí)現(xiàn)網(wǎng)絡(luò)連接的管理,詳情請(qǐng)見(jiàn):
1.5.2 不支持Google Maps
OPhone目前不支持Google Maps API,因此使用Google Maps API開(kāi)發(fā)的Android應(yīng)用程序?qū)o(wú)法移植到OPhone平臺(tái)。
1.5.3 多分辨率支持由于市面上的大部分Android終端設(shè)備都是HVGA(480x320),因此許多應(yīng)用程序在開(kāi)發(fā)時(shí)并未考慮多分辨率的問(wèn)題。這就導(dǎo)致部分Android Market上的應(yīng)用程序安裝在非HVGA(480x320)分辨率的OPhone終端,出現(xiàn)分辨率不匹配的問(wèn)題。
目前OPhone終端除了支持HVGA(480x320)分辨率之外,還支持nHD(640x360)、WVGA(800x480)、FWVGA(854x480)等。因此,在OPhone平臺(tái)上開(kāi)發(fā)應(yīng)用程序,應(yīng)當(dāng)考慮多分辨率支持,并且在模擬器上應(yīng)用測(cè)試時(shí)使用分辨率設(shè)置。#p#
不同的OPhone終端所支持的傳感器不同,因此一些需要特殊傳感器支持的游戲或應(yīng)用無(wú)法在某些OPhone終端上正常運(yùn)行。
目前Android 平臺(tái)支持的傳感器有:
android. hardware.Sensor
– TYPE_ACCELEROMETER
– TYPE_GYROSCOPE
– TYPE_LIGHT
– TYPE_MAGNETIC_FIELD
– TYPE_ORIENTATION
– TYPE_PRESSURE
– TYPE_PROXIMITY
– TYPE_TEMPERATURE
目前的建議是,在使用之前先檢測(cè)當(dāng)前OPhone終端支持哪些傳感器,相關(guān)的測(cè)試代碼如下:
- SensorManager sensorMgr =
- (SensorManager)getSystemService(Context.SENSOR_SERVICE);
- List list = sensorMgr.getSensorList(Sensor.TYPE_ALL);
- for (int i = 0; i < list.size(); i++) {
- Sensor sensor = (Sensor) list.get(i);
- result += "\t" + sensor.getName() + "\n";
- }
1.5.5 Tabview的UI顯示
部分Android Market上使用了Tabview的應(yīng)用安裝在OPhone終端上會(huì)出現(xiàn)顯示錯(cuò)誤。這是由于OPhone平臺(tái)只允許在一屏有三個(gè)Tab,而對(duì)此的實(shí)現(xiàn)導(dǎo)致了該問(wèn)題的發(fā)生。
但只要嚴(yán)格按照以下例子程序就可以避免該問(wèn)題的出現(xiàn):
1.5.6 OPhone特殊UI風(fēng)格
由于部分的OPhone終端設(shè)備沒(méi)有Home按鍵,因此對(duì)于應(yīng)用開(kāi)發(fā)者而言,不建議隱藏Status Bar和Title Bar。
但由于某些應(yīng)用,特別是游戲,需要全屏顯示,可以參考一下代碼實(shí)現(xiàn):
1.5.7 應(yīng)用簽名
OPhone平臺(tái)和Android平臺(tái)在應(yīng)用簽名方面沒(méi)有區(qū)別,但需要注意的是,調(diào)試用簽名和發(fā)布用簽名所使用的證書(shū)是不同的。如果應(yīng)用程序沒(méi)有被簽名,在安裝的時(shí)候就會(huì)出現(xiàn)以下錯(cuò)誤:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]