隨筆-1  評論-68  文章-98  trackbacks-0
          作者:徐建祥(netpirate@gmail.com)
          日期:2010/05/06
          網(wǎng)址:http://www.anymobile.org

          目  錄
          1.項目簡介……………………………………………………4
              1.1.移植背景………………………………………………4
              1.2.功能介紹………………………………………………4
              1.3.軟件環(huán)境………………………………………………4
                  1.3.1開發(fā)環(huán)境………………………………………………4
                  1.3.2運行環(huán)境………………………………………………4
          2. 設(shè)計思路………………………………………………………………4
              2.1.移植目標(biāo)………………………………………………4
              2.2.平臺架構(gòu)………………………………………………5
              2.3.移植思路………………………………………………5
              2.4.移植流程………………………………………………5
              2.5.界面流程………………………………………………7
              2.6.性能評估………………………………………………7
          3.移植模塊…………………………………………………………7
              3.1 標(biāo)準(zhǔn)庫……………………………………………………9
                  3.1.1基本類型………………………………………………9
                  3.1.2字符串操作………………………………………………9
                  3.1.3文件操作………………………………………………9
              3.2 平臺相關(guān)……………………………………………………9
                  3.2.1內(nèi)存控制………………………………………………9
                  3.2.2線程操作………………………………………………9
                  3.2.3進(jìn)程操作………………………………………………10
                  3.2.4時鐘操作………………………………………………10
                  3.2.5日期時間………………………………………………10
                  3.2.6環(huán)境變量………………………………………………10
              3.3網(wǎng)絡(luò)連接……………………………………………………10
              3.4文本相關(guān)……………………………………………………10
                  3.4.1文本輸出………………………………………………10
                  3.4.2字體管理………………………………………………10
              3.5多媒體相關(guān)………………………………………………11
                  3.5.1圖像輸出………………………………………………11
                  3.5.2聲音輸出………………………………………………11
                  3.5.3視頻輸出………………………………………………11
              3.6 用戶界面………………………………………………11
              3.7數(shù)據(jù)存儲………………………………………………11
          4.調(diào)試測試…………………………………………………………11
              4.1調(diào)試方法………………………………………………11
              4.2測試框架………………………………………………11
              4.3自動化測試………………………………………………12
              4.4集成測試………………………………………………13

           

          1.項目簡介

          1.1移植背景

          XXXX軟件,在 Android 平臺的移植,相對其他的平臺的移植,有著很多的特殊性,其中最主要的一個原因,Android 采用 Java 作為應(yīng)用開發(fā)語言,而其他平臺的軟件,為了性能和跨平臺的方便,都采用C或者C++語言,增加了移植的復(fù)雜度,考慮采用JNI技術(shù),通過JNI來實現(xiàn) java C 的互操作和互調(diào)用。

          1.2.功能介紹

          本文主要介紹 XXXX軟件的移植要點,通過對這些要點的介紹,來了解 XXXX軟件的移植過程。

          本文面向有一定的手機(jī)應(yīng)用開發(fā)經(jīng)驗(S60/Mobile/MTK)和有一定的跨手機(jī)平臺移植經(jīng)驗的人員,幫助她們了解一個核心庫(C/C++)是怎么移植到Android之上的。

          1.3.軟件環(huán)境

          1.3.1開發(fā)環(huán)境

          Windows XP SP3

          JavaSE 1.6

          Microsoft Visual C++ 2003

          Eclipse 3.5

          Android Native Development Kit (NDK) 1.6

          Android Standard Development Kit (SDK) 1.5

          1.3.2運行環(huán)境

          Android 1.5及以上平臺

          HVGA (320x480)。。。

          2.              設(shè)計思路

          2.1.移植目標(biāo)

          feature phone平臺的XXXX框架移植到Android平臺,并實現(xiàn)應(yīng)用入口、窗口的上層UI時間以及中斷處理等集成調(diào)用,實現(xiàn)Android平臺的產(chǎn)品化。

          2.2.平臺架構(gòu)

          APPUI; JNI

          平臺相關(guān)(STD/SYS; GUI; Video/Audio; Network

          適配器

          核心應(yīng)用層(UI; Media; Browser; Protocol

          (架構(gòu)圖略。)

          2.3.移植思路

          在手機(jī)視頻點播軟件中程序要處理的主要有瀏覽器界面,按鍵,數(shù)據(jù)保存,網(wǎng)絡(luò)等。MTK平臺軟件移植到Android上,主要涉及平臺相關(guān)的具體實現(xiàn),如網(wǎng)絡(luò)部分,標(biāo)準(zhǔn)庫,系統(tǒng)相關(guān)接口,手機(jī)窗口界面的按鍵/觸摸屏事件,中斷處理等,核心庫基本不用改。

          2.4.移植流程

          1、創(chuàng)建標(biāo)準(zhǔn)NDK應(yīng)用,NDK_ROOT/apps/XXXX目錄;

          2、編寫兩個腳本文件,application.mk & Android.mk

          3、導(dǎo)入核心庫libXXXX.so和頭文件;

          4、導(dǎo)入Windows版本的PC客戶端程序,涉及到平臺相關(guān)的全部注空;

          5、編譯生成新的動態(tài)庫libXXXX.so

          6、填入Android平臺相關(guān)的接口調(diào)用,完成底層庫的移植;

          7、創(chuàng)建Android應(yīng)用項目,加入平臺庫;

          8、改寫上層應(yīng)用的入口和事件接口,通過JNI調(diào)用底層庫,畫面幀通過java層申請的surface對應(yīng)的native接口,及時刷新;

          9、打包生成apk安裝文件。

           

          2.5.界面流程

          略。
             

          2.6.性能評估

          Java  C 的互操作是通過JNIJNI對性能的損耗相對較大,但是Android的上層Java框架還是為我們移植以及UI提供了很完善的方案,如AsycTask等,所以在移植產(chǎn)品時一定要做好性能評測,并確定是否可接受的范圍內(nèi)。

          3.移植模塊

          編譯器差異:arm交叉編譯

          平臺差異:    基于LinuxAndroid平臺

           

          文件名

           

          xxxx_wrapper.cpp

           

          xxxxxxxxxx


           

          3.1 標(biāo)準(zhǔn)庫

          3.1.1基本類型

          2.0平臺定義,統(tǒng)一使用平臺定義的類型

          3.1.2字符串操作

          標(biāo)準(zhǔn)C庫。

          3.1.3文件操作

          標(biāo)準(zhǔn)C庫。

          3.2 平臺相關(guān)

          3.2.1內(nèi)存控制

          標(biāo)準(zhǔn)C

          3.2.2線程操作

          使用符合POSIXpthread,涉及到線程和線程鎖,如下:

          1Android版本的pthread,取消了pthread_cancel()等非正常退出接口;

          2pthread的線程優(yōu)先級,設(shè)置值越低,優(yōu)先級越大,值域在-20~+20,與windows相反(值域0~31);

          3、線程的二元鎖,使用的是互斥量pthread_mutex_t

          3.2.3進(jìn)程操作

          未涉及。

          3.2.4時鐘操作

           

          3.2.5日期時間

           

          3.2.6環(huán)境變量

          包括兩部分:系統(tǒng)平臺相關(guān)和Kernel相關(guān)。

          3.3網(wǎng)絡(luò)連接

           

          3.4文本相關(guān)

          3.4.1文本輸出

          ime_trace  添加了系統(tǒng)自動的log功能,可以通過logcat工具查看。

          3.4.2字體管理

           

          3.5多媒體相關(guān)

          3.5.1圖像

          JPEG

          3.5.2聲音

          AMR

          3.5.3視頻

          H.264/H.263

          3.6 用戶界面

          屏幕方向:橫屏/豎屏

          屏幕尺寸:320*480

          3.6.1 窗口事件

          全屏

          隱藏標(biāo)題欄

          繪制窗口

          按鍵->應(yīng)用級的按鍵處理

          3.6.2按鍵事件

          確認(rèn)鍵:

          方向鍵:

          硬鍵盤:

          軟鍵盤:

          3.6.3觸摸屏事件

          點按:

          長按:

           按下:

          松開:

          3.6.4中斷事件

          系統(tǒng)中斷:

          應(yīng)用中斷:

          意圖中斷:

          3.7數(shù)據(jù)存儲

          Android 采用的是SQLite 3數(shù)據(jù)庫,以.db的方式存放在各個應(yīng)用對應(yīng)的data目錄下。

          4.調(diào)試測試

          Android 平臺除了為應(yīng)用程序開發(fā)提供了豐富的API外,提供了模擬器,方面調(diào)試程序,同時也為開展自動化測試提供了多種途徑,本項目主要采用基于JUnit的自動化測試。
          Android的模擬器和Mobile的模擬器一樣是模擬ARM指令的,不像Symbian模擬器一樣執(zhí)行的是本地代碼,所以在模擬器上模擬出來的效率會比真實手機(jī)上的效率要低。

          開發(fā)過程中,核心庫的移植測試以IDE調(diào)試為主,應(yīng)用程序主要采用模擬器調(diào)試,后期的集成測試以手機(jī)測試為主,輔以模擬器調(diào)試。

          4.1調(diào)試方法

          trace方法

            

          adb方法

            

          堆棧分析

            

          4.2測試框架

          JUnit是廣泛應(yīng)用于Java程序開發(fā)中的單元測試框架。它定義了特定格式的方法做為測試用例,提供TestSuite測試套件和TestRunner測試執(zhí)行器分別用于組織測試用例和運行測試用例并反饋測試結(jié)果。

          Instrumentation則是一種操作系統(tǒng)和上層應(yīng)用程序之間的監(jiān)控機(jī)制。當(dāng)應(yīng)用程序運行時,若Instrumentation設(shè)置為開啟,它將在應(yīng)用程序運行前初始化,與應(yīng)用程序運行在同一個進(jìn)程中,監(jiān)測應(yīng)用程序與系統(tǒng)之間的交互,并可以對應(yīng)用程序進(jìn)行一定的控制,例如,監(jiān)控應(yīng)用中各Activity的調(diào)用情況,啟動和結(jié)束Activity,對Activity生命周期中的各個狀態(tài)進(jìn)行切換,甚至可以向Activity發(fā)送按鍵事件和字符。

          基于JUnit+Instrumentation的自動化測試框架的架構(gòu)圖如下所示:

          4.3自動化測試

          JUnit對各個功能模塊作單元測試,然后利用Instrumentation模擬用戶從圖形界面發(fā)起的諸如點擊或拖拽屏幕、輸入字符、選擇菜單項等操作,就可以實現(xiàn)自動化功能測試甚至系統(tǒng)測試。與數(shù)據(jù)庫操作和View操作配合使用后,這種自動化測試能夠?qū)崿F(xiàn)與測試人員的手動測試具有同樣的效果。

           JUnitInstrumentation相結(jié)合,既充分發(fā)揮了JUnit在測試用例開發(fā)、組織等方面的特點,又提供了對應(yīng)用程序進(jìn)行控制的有效途徑。

           

          4.4集成測試

          略。

          posted on 2010-08-12 00:24 Xu Jianxiang 閱讀(6477) 評論(1)  編輯  收藏 所屬分類: Android

          評論:
          # re: XXXX軟件Android平臺移植說明書 2011-01-16 11:31 | blue15
          想問一下,一個XP下的財務(wù)軟件,可以一直到Android系統(tǒng)下嗎?
          財務(wù)軟件的服務(wù)器端為Linux ,sybase.客戶端想采用平板電腦,不知道是否可行,因現(xiàn)在處于構(gòu)思階段,所以想大概了解一下,可以給我發(fā)郵件,pengml@mail.hz.zj.cn,謝謝。  回復(fù)  更多評論
            
          主站蜘蛛池模板: 无极县| 蒲城县| 内江市| 海安县| 古丈县| 顺昌县| 时尚| 嘉祥县| 三亚市| 彰化县| 通化县| 大埔县| 麻栗坡县| 安徽省| 宿州市| 东阳市| 芜湖县| 东乡县| 平湖市| 额济纳旗| 宿州市| 鄢陵县| 香河县| 富蕴县| 巴青县| 隆回县| 迁西县| 攀枝花市| 石林| 桂林市| 铜山县| 保山市| 枞阳县| 阿克陶县| 西盟| 元朗区| 泗水县| 广汉市| 浪卡子县| 离岛区| 吴旗县|