<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

     

    1.項目簡介

    1.1移植背景

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

    1.2.功能介紹

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

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

    1.3.軟件環境

    1.3.1開發環境

    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運行環境

    Android 1.5及以上平臺

    HVGA (320x480)。。。

    2.              設計思路

    2.1.移植目標

    feature phone平臺的XXXX框架移植到Android平臺,并實現應用入口、窗口的上層UI時間以及中斷處理等集成調用,實現Android平臺的產品化。

    2.2.平臺架構

    APPUI; JNI

    平臺相關(STD/SYS; GUI; Video/Audio; Network

    適配器

    核心應用層(UI; Media; Browser; Protocol

    (架構圖略。)

    2.3.移植思路

    在手機視頻點播軟件中程序要處理的主要有瀏覽器界面,按鍵,數據保存,網絡等。MTK平臺軟件移植到Android上,主要涉及平臺相關的具體實現,如網絡部分,標準庫,系統相關接口,手機窗口界面的按鍵/觸摸屏事件,中斷處理等,核心庫基本不用改。

    2.4.移植流程

    1、創建標準NDK應用,NDK_ROOT/apps/XXXX目錄;

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

    3、導入核心庫libXXXX.so和頭文件;

    4、導入Windows版本的PC客戶端程序,涉及到平臺相關的全部注空;

    5、編譯生成新的動態庫libXXXX.so

    6、填入Android平臺相關的接口調用,完成底層庫的移植;

    7、創建Android應用項目,加入平臺庫;

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

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

     

    2.5.界面流程

    略。
       

    2.6.性能評估

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

    3.移植模塊

    編譯器差異:arm交叉編譯

    平臺差異:    基于LinuxAndroid平臺

     

    文件名

     

    xxxx_wrapper.cpp

     

    xxxxxxxxxx


     

    3.1 標準庫

    3.1.1基本類型

    2.0平臺定義,統一使用平臺定義的類型

    3.1.2字符串操作

    標準C庫。

    3.1.3文件操作

    標準C庫。

    3.2 平臺相關

    3.2.1內存控制

    標準C

    3.2.2線程操作

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

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

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

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

    3.2.3進程操作

    未涉及。

    3.2.4時鐘操作

     

    3.2.5日期時間

     

    3.2.6環境變量

    包括兩部分:系統平臺相關和Kernel相關。

    3.3網絡連接

     

    3.4文本相關

    3.4.1文本輸出

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

    3.4.2字體管理

     

    3.5多媒體相關

    3.5.1圖像

    JPEG

    3.5.2聲音

    AMR

    3.5.3視頻

    H.264/H.263

    3.6 用戶界面

    屏幕方向:橫屏/豎屏

    屏幕尺寸:320*480

    3.6.1 窗口事件

    全屏

    隱藏標題欄

    繪制窗口

    按鍵->應用級的按鍵處理

    3.6.2按鍵事件

    確認鍵:

    方向鍵:

    硬鍵盤:

    軟鍵盤:

    3.6.3觸摸屏事件

    點按:

    長按:

     按下:

    松開:

    3.6.4中斷事件

    系統中斷:

    應用中斷:

    意圖中斷:

    3.7數據存儲

    Android 采用的是SQLite 3數據庫,以.db的方式存放在各個應用對應的data目錄下。

    4.調試測試

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

    開發過程中,核心庫的移植測試以IDE調試為主,應用程序主要采用模擬器調試,后期的集成測試以手機測試為主,輔以模擬器調試。

    4.1調試方法

    trace方法

      

    adb方法

      

    堆棧分析

      

    4.2測試框架

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

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

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

    4.3自動化測試

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

     JUnitInstrumentation相結合,既充分發揮了JUnit在測試用例開發、組織等方面的特點,又提供了對應用程序進行控制的有效途徑。

     

    4.4集成測試

    略。

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

    評論:
    # re: XXXX軟件Android平臺移植說明書 2011-01-16 11:31 | blue15
    想問一下,一個XP下的財務軟件,可以一直到Android系統下嗎?
    財務軟件的服務器端為Linux ,sybase.客戶端想采用平板電腦,不知道是否可行,因現在處于構思階段,所以想大概了解一下,可以給我發郵件,pengml@mail.hz.zj.cn,謝謝。  回復  更多評論
      
    主站蜘蛛池模板: caoporn成人免费公开| 免费人成毛片动漫在线播放| 亚洲爆乳成av人在线视菜奈实| 57pao国产成永久免费视频| 亚洲午夜视频在线观看| 亚洲免费精彩视频在线观看| 狼友av永久网站免费观看| 亚洲av中文无码字幕色不卡| 国产精品二区三区免费播放心| 亚洲欧美日韩中文高清www777 | 狼色精品人妻在线视频免费| 99久在线国内在线播放免费观看| 五月天婷亚洲天综合网精品偷| 国产成人亚洲综合无| 四虎影视免费永久在线观看| 美女视频黄a视频全免费网站色| 亚洲精品无码久久久| 免费高清国产视频| 亚洲成在人线电影天堂色| 成人午夜视频免费| 国产天堂亚洲国产碰碰| 亚洲午夜久久久影院伊人| 国产精品免费一区二区三区四区| 亚洲精品免费在线| 免费看美女被靠到爽的视频| 又黄又大的激情视频在线观看免费视频社区在线 | 日本免费网站视频www区| 亚洲精品无码你懂的| 亚洲成?v人片天堂网无码| 亚洲精品二三区伊人久久| 日本无卡码免费一区二区三区| 亚洲一级片免费看| 亚洲福利视频网址| 免费jlzzjlzz在线播放视频| 亚洲综合欧美色五月俺也去| 久久久久久曰本AV免费免费| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲午夜福利精品久久| ww在线观视频免费观看| 国产亚洲视频在线观看| 亚洲午夜精品久久久久久人妖|