觸摸屏程序源碼
1. 如何使用python做android的自動化測試
一、首先說說手機自動化測試的原理 1、手機自動化測試的原理為PC上一個控制端(測試工具)與手機上的一個agent端,通過串口、USB或者無線方式將PC與手機終端相連,然後應用測試工具向手機發送請求或者命令,手機收到命令或者請求後,交給agent端解析,然後agent將這些解析的命令下發給手機的各個功能模塊所能識別的命令,調用那些功能模塊模擬操作。完成這些操作後,手機會返回一些信息,agent可以抓取這些信息,然後傳回給PC端,這樣就完成了一個完整的手機自動化測試。 2、關鍵點在於agent,有的公司是向自己的手機終端的軟體功能模塊中植入測試程序響應代碼,有的公司可以利用MMI_Command的方式來控制手機終端;原理就是給手機提供一個響應的介面。 3、而對於PC控制端,這個測試腳本用各種編程語言都可以,看如何定義 4、而又的自動化測試設計成錄制的機制,說通俗點,就是記錄手工操作的鍵盤信息或者LCD的操作信息(LCD需要用到智能識別機制) 5、自動化測試框架的搭建方法是通用的,你需要有一套自己的測試框架才能保證自動化測試的順利開展。 二、Android自動化測試方向: 1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。 2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。 3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發簡訊,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 腳本調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。 4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用 進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控制項上點擊,輸入Text 等等。(推舉你可以研究一下這個工具,開源的,我有資料) 5、可以自己開發一個手機方面的自動化測試工具,原理上一樣的 如果你想要什麼資料的話或者想一起學習研究的話,可以給我發郵件:[email protected]
2. 如何移植android2.1源代碼到自己的手機上
一,准備好android2.1源碼編譯環境以及手機USB調試環境。
二,將手機上硬體驅動程序以及相關的配置文件通過ADB命令保存好。
三,針對不同的手機機型,製作相應的vendor配置文件。
四,編譯源碼。
五,通過手機提供的bootloader刷機或者直接以recovery的方式更新ROM。
在以上五個步驟中,其中最難處理的便是第2個步驟,這個步驟需要熟悉每個手機機型的硬體參數,並且能夠在手機上找到相關的驅動程序以及了解他們如何配置。而CyanogenMod團隊公布的源碼當中,己經將相關的工作做好了,編譯源碼之前僅僅需要執行相應的shell命令,便可順利的下載相應的手機驅動程序以及配置文件。
下面是移植步驟,供參考:
一,首先需要下載CyanogenMod 5.0.8的源碼:
$ mkdir android-cm5
$ cd android-cm5
$ repo init -u git://github.com/CyanogenMod/android.git -b eclair
$ repo sync
二,下載CyanogenMod需要的一些共同文件,如果想最終版本中不需要這些APK,也可以通過配置/vendor/cyanogen/cyanogen.mk文件將這些需要的APK COPY命令注釋掉。
$ cd vendor/cyanogen/
$ ./get-rommanager #下載一個RomManager.apk包,主要是刷ROM用的。我沒用過。
$ ./get-google-files #其它的一些google開發的android apk包,我也沒有用過!
三,下載針對htc legend(g6)的vendor.
$ cd ../../vendor/htc
$ git clone git://github.com/aleho/android_vendor_htc_legend.git #下載針對htc legend(g6)手機的vendor,裡麵包括相關的配置參數,以及從手機上下載驅動程序的SHELL命令。
$ mv android_vendor_htc_legend/ legend
$ cd legend
$ ./extract-files.sh #確保這個命令執行將你的手機連接好電腦並且開了手機USB調試,adb命令可以連接手機。這個過程主要是下載htc legend(g6)驅動程序以及配置文件。
四,針對CyanogenMod 5.0.8源碼打上htc legend(g6)的補丁包,這個補丁包主要是wifi和觸摸屏的,如果不做,觸摸屏將無法觸摸以及wifi功能無法啟動。
3. 安裝QT環境遇到這種情況怎麼破
Centos6.3自身是帶QT4.6.2的,在裝系統時可以選擇安裝,但是沒有qvfb工具,所以又自己重新編譯了qt-x11的4.5.0版本。
qt各版本版本下載地址(在網上找的很多博文里給的鏈接都失效了,下面這個鏈接貌似還比較新,現在可以用):
http://qt-project.org/downloads
ftp://ftp.qt-project.org/qt/source/
在ftp資源里找到 qt-x11-opensource-src-4.5.0、qt-embedded-linux-opensource-src-4.5.0這兩個源碼包並下載(tar.gz或tar.bz2包都有,網速不好的話看哪個小下載哪個)。
下載後將兩個源碼包分別解壓,qt-x11-opensource-src-4.5.0解壓一份,qt-embedded-linux- opensource-src-4.5.0解壓兩份,分別命名為qt-embedded-linux-opensource-src-4.5.0-x86 和 qt-embedded-linux-opensource-src-4.5.0-arm 。
開始編譯安裝:
一、X11編譯:
1.進入qt-x11-opensource-src-4.5.0源碼目錄。
./configure -no-openssl
在我這里必須加上-no-openssl選項,否則在make過程中,編譯到ssl時會報錯。出錯信息為:
ssl/qsslsocket_openssl_symbols_p.h:264: error: variable or field 『q_sk_free』 declared void
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『a』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『a』 was not declared in this scope
……
……
默認安裝路徑為 /usr/local/Trolltech/Qt-4.5.0。可用--prefix 指定其他安裝路徑。
2. gmake # linux下一般可直接用make代替gmake。如果要加快編譯速度,就加上 -jx ,x表示最大的線程數。
3. gmake install
二、qt-embedded-x86編譯:
1.進入qt-embedded-linux-opensource-src-4.5.0-x86源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -no-openssl -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
先後配置了安裝目錄、嵌入式架構(x86)。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。再後面的幾項是為了更好的配合qvfb,網上說如果沒有這幾 項,安裝好qt-embedded-x86後想在qvfb上調試程序時,會出現類似下面的錯誤:
Error opening buffer device /dev/fb0QScreenLinuxFb::connect: No such file or directory
2. gmake
跟x11版一樣
3. gamke install
三、qt-embedded-arm:
與前面兩個不同,在編譯arm版本的qt-embedded前,必須確認已經安裝了交叉工具鏈,編譯過程中要生成許多arm架構的庫,所以必須有 arm-linux-gcc、arm-linux-g++等工具。我用的是友善提供的arm-linux-gcc-4.5.1版本。
1. 進入qt-embedded-linux-opensource-src-4.5.0-arm源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm -no-openssl -qt-libpng
指定了安裝路徑、嵌入式架構。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。
另外,還增加了一項, -qt-libpng,這個選項應該是關於png相關的庫,指定用qt自帶的png庫。如果沒有這一項,我這里會出現如下錯誤:
image/qpnghandler.cpp: In member function 'virtual QVariant QPngHandler::option(QImageIOHandler::ImageOption) const':
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
make[1]: *** [.obj/release-shared-emb-arm/qpnghandler.o] 錯誤 1
make[1]: *** 正在等待未完成的任務....
make[1]: Leaving directory `/root/qt4.5.0/qt-embedded-linux-opensource-src-4.5.0-arm/src/gui'
make: *** [sub-gui-make_default-ordered] 錯誤 2
看起來像是我的交叉工具鏈跟這個QT版本匹配的不太好,Qt好像不太兼容交叉工具鏈的png.h頭文件中定義的數據結構。加上 -qt-libpng 可解決此問題。
四、qvfb:
這時QT就已安裝成功。但是還需要額外安裝qvfb。
進入qt-x11-opensource-src-4.5.0源碼包目錄,然後
cd tools/qvfb
在qvfb源碼目錄下運行 make 會在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我們將它至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下即可。
end:
到這里,QT的開發環境基本就搭建好了,利用 qt-embedded-x86 和 qvfb 工具可以很方便的調試QT程序,調試好的程序再經 qt-embedded-arm 編譯就可在開發板上運行(還有個小問題,我現在編譯好的QT程序雖然可以在開發板上運行,但是運行時觸摸屏不能用,只能用USB滑鼠控制,想支持觸摸屏貌 似還需要移植tslib庫,等我折騰完了再回來把相關內容補充上)。