久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android及Robotium備忘

 liuchangxin81 2014-09-15

1. 需要設(shè)置的環(huán)境變量

ANDROID_HOME=D:\Android\android-sdks

ANDROID_SDK_HOME=D:\Android\avd

JAVA_HOME= C:\Program Files\Java\jdk1.7.0_05

CLASSPATH=.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;

PATH=...;(追加)%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%JAVA_HOME%\bin;%CLASSPATH%

注意,環(huán)境設(shè)置后重啟電腦才生效。

如果知道環(huán)境變量是否生效,?例如查看ANDROID_HOME環(huán)境變量的設(shè)置,,開始->運(yùn)行->cmd,在cmd下面輸入echo % ANDROID_HOME%,,如果與我們預(yù)期的一致就說明生效了,。如果原樣輸出% ANDROID_HOME%就說明環(huán)境變量未生效,需要重啟操作系統(tǒng),。

詳細(xì)說明如下

1.1         ANDROID_HOME

ANDROID_HOME= D:\Android\android-sdks,,指定sdk包含的位置,什么是sdk,?網(wǎng)上去搜,,簡單點(diǎn)說就是里面要包含AVD ManagerSDK Manager:

Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

同時(shí),eclipse也要設(shè)置SDK的位置,,最好和ANDROID_HOME設(shè)置一樣,如下

Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

1.2         ANDROID_SDK_HOME

ANDROID_SDK_HOME設(shè)置的是avd的路徑,一般默認(rèn)在用戶路徑下,,例如C:\Users\tanggod\.android,, SD卡的空間都是從這里分配的??梢耘驳狡渌夸浵?,需要在環(huán)境變量里面設(shè)置如下:

ANDROID_SDK_HOME=D:\Android\avd

如此設(shè)置后(重啟電腦讓環(huán)境變量生效 ),以后創(chuàng)建的AVD就會(huì)在我們指定的目錄下了:

Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

1.3         JAVA_HOME

JDK,JAVA_HOME必須設(shè)置jdk安裝的目錄,例如:

 JAVA_HOME= C:\Program Files\Java\jdk1.7.0_05

C:\Program Files\Java\jdk1.7.0_05

查看JDK版本號(hào),?在cmd下面輸入:Java -version

 Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

PS:1.7jdk似乎還很不穩(wěn)定,,有問題,,建議用1.6的。

jdk下載位置:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

 1.4         CLASSPATH

classpath環(huán)境變量,,是當(dāng)我們?cè)陂_發(fā)java程序時(shí)需要引用別人寫好的類時(shí),,要讓java解釋器知道到哪里去找這個(gè)類。通常,,sun為我們提供了一些額外的豐富的類包,,一個(gè)是dt.jar,,一個(gè)是tools.jar,這兩個(gè)jar包都位于C:\jdk1.6.0\lib目錄下,,所以通常我們都會(huì)把這兩個(gè)jar包加到我們的classpath環(huán)境變量中set classpath=.;C:\jdk1.6.0\lib\tools.jar;C:\jdk1.6.0\lib\dt.jar,。在系統(tǒng)環(huán)境變量那一欄中點(diǎn)->新建classpath 
         
變量名:classpath 
         
變量值:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;(注意,CLASSPATH最前面是有個(gè)“.”的,,表示當(dāng)前目錄,,這樣當(dāng)我們運(yùn)行java AClass的時(shí)候,系統(tǒng)就會(huì)先在當(dāng)前目錄尋找AClass文件了,。),;

1.5         PATH

環(huán)境變量PATH設(shè)置的時(shí)候,注意是追加,,不能將已有的內(nèi)容清空了,。

PATH = %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%JAVA_HOME%\bin;%CLASSPATH%

主要設(shè)置的是adb.exeemulator的位置(在tools或者platform-tools目錄中),已經(jīng)jdk工具的路徑等等,。

2.   如何簽名Sign

Android系統(tǒng)要求每一個(gè)Android應(yīng)用程序必須要經(jīng)過數(shù)字簽名才能夠安裝到系統(tǒng)中,,也就是說如果一個(gè)Android應(yīng)用程序沒有經(jīng)過數(shù)字簽名,是沒有辦法安裝到系統(tǒng)中的,!

為了方便我們開發(fā)調(diào)試程序,,ADT會(huì)自動(dòng)的使用debug密鑰為應(yīng)用程序簽名。debug密鑰,?它在哪,?debug密鑰是一個(gè)名為debug.keystore的文件,它的位置: Ubuntu: ~/.android/debug.keystore win7c:/user/.Android/debug.keystore;  xp: C:/Documents and Settings/user/.Android/debug.keystore),,user對(duì)應(yīng)于你自己的windows操作系統(tǒng)用戶名,,這也就意味著,,如果我們想擁有自己的簽名,,而不是讓ADT幫我們簽名的話,我們也要有一個(gè)屬于自己的密鑰文件(*.keystore

Robotium做黑盒測試的時(shí)候,,需要對(duì)待測試的apk去除簽名,,然后自己再簽名。google網(wǎng)站上有個(gè)簽名工具叫做re-sign.jar,,比較傻瓜化,,直接將apk拖入到re-sign.jar中后自動(dòng)去除簽名,重新再簽名,;很多人都建議用這個(gè)工具,。我剛開始也用這個(gè),可是發(fā)現(xiàn)用這個(gè)工具處理后,,無論是android模擬器還是真機(jī),,都裝不上,提示沒有簽名。

我將apk解開看,,確實(shí)是有簽名的,。

查看簽名:

jarsigner -verify -verbose -certs D:\Android\apk\02-AndroidCalculator-sign.apk

 

所以后來,我就手工用命令行來簽名,。手工簽名之前,,首先需要去除原來簽名的信息,去除方法很簡單,。就是將apk文件后綴改為.zip,,然后從winrar中刪除META-INF文件夾,刪除后重新將文件名改成apk的后綴,,這樣就去除簽名了,。然后用下面的命令進(jìn)行簽名。

注意下面黃色高亮和灰色高亮的字,,需要根據(jù)自己的debug.keystore的位置,,和待簽名apk的位置進(jìn)行設(shè)置。 

簽名AndroidCalculator

> jarsigner -keystore D:\Android\avd\.android\debug.keystore -storepass android -keypass android D:\Android\apk\02-AndroidCalculator-unsign.apk androiddebugkey

> zipalign 4 D:\Android\apk\02-AndroidCalculator-unsign.apk D:\Android\apk\02-AndroidCalculator-sign.apk

 zipalign能夠使apk文件中未壓縮的數(shù)據(jù)在4個(gè)字節(jié)邊界上對(duì)齊(4個(gè)字節(jié)是一個(gè)性能很好的值)

例如簽名Plingm

>jarsigner -keystore D:\Android\avd\.android\debug.keystore -storepass android -keypass android D:\Android\apk\plingm\com.freephoo.android_1180-unsign.apkandroiddebugkey

> zipalign 4 D:\Android\apk\plingm\com.freephoo.android_1180-unsign.apkD:\Android\apk\plingm\com.freephoo.android_1180-sign.apk

 對(duì)于jdk 1.7版本,,簽名稍有區(qū)別,,需要加上參數(shù):-digestalg SHA1 -sigalg MD5withRSA,例如

 

>jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore D:\Android\avd\.android\debug.keystore -storepass android -keypass android D:\Android\apk\plingm\com.freephoo.android_1180-unsign.apkandroiddebugkey

> zipalign 4 D:\Android\apk\plingm\com.freephoo.android_1180-unsign.apkD:\Android\apk\plingm\com.freephoo.android_1180-sign.apk

簽名后如何安裝到模擬器中,?命令如下

>emulator -avd android4.1

>adb install D:\Android\apk\plingm\com.freephoo.android_1180-sign.apk

 如果是安裝到真機(jī)中,,就不需要上面第一條命令啟動(dòng)模擬器了,直接usb連接上手機(jī),,執(zhí)行adb install即可,。

 

在進(jìn)行黑盒測試之前,需要知道待測試apk的包及activity信息,。查看某個(gè)apkpackage name,,可以用aapt看:

platform-tools目錄下使用如下命令aapt dump badging XXX.apk

aapt dump badgingD:\Android\apk\plingm\com.freephoo.android_1180-sign.apk

 也可以用re-sign.jar看,結(jié)果如下:package: name='com.freephoo.android'

 Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

3.   真機(jī)調(diào)試

  •   設(shè)置android手機(jī)為USB調(diào)試模式。步驟: menu---> 設(shè)置 ---> 應(yīng)用程序 ---> 開發(fā) , 選擇【USB調(diào)試】 

  • USB連接手機(jī)和電腦,,并確保成功,。步驟: windows下執(zhí)行c:/adb devices 查看手機(jī)是否已經(jīng)連接成功,。

連接不成功:

Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】
連接成功
Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

  • 設(shè)置應(yīng)用程序?yàn)檎{(diào)試模式(這個(gè)似乎不要也可以),。操作: 編輯AndroidManifest.xml 增加調(diào)試參數(shù)android:debuggable="true", 如下:

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">

  • 查看具體異常信息:

執(zhí)行:./adb logcat 可以查看到更多的系統(tǒng)異常消息。在這些消息中要注意查看Caused by: 頭的行,,這些行指明了在哪行代碼出的錯(cuò)誤

4.   已知控件id,,如何模擬按鍵

我們知道,android每個(gè)控件都有一個(gè)類似R.id.xxxx字符串id,。在做白盒測試的時(shí)候,,將被測試的代碼包import一下,直接調(diào)用R.id.xxxx就可以了,。

但是在黑盒測試的時(shí)候,,我們只有apk,沒有源代碼,,怎么獲取控件的id呢,?

java已經(jīng)給我們提供了這個(gè)工具。只需要在cmd下面輸入hierarchyviewer即可調(diào)出控件查看工具(如果cmd不認(rèn)識(shí)你的hierarchyviewer,,說明你的環(huán)境變量沒有配置正確)

 Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

選中需要查看的應(yīng)用,,點(diǎn)擊:"Load View Hierarchy"

如下id/后面的"Button01"即為buttonid,。
Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

 
好了,,已知控件的id,在Robotium中如何模擬按鍵呢,?這里常用的有2種方法:

1. 根據(jù)button上面的文字,。這個(gè)很簡單,直接solo.clickOnButton("Multiply");即可,。

2. 根據(jù)控件的坐標(biāo),。hierarchyviewer是可以查看每個(gè)點(diǎn)的坐標(biāo)的。但是使用起來不是很直觀,,尤其是對(duì)不同分辨率屏幕的手機(jī)時(shí),,使用起來可能還存在兼容性問題,。

 

如果控件上沒有文字,,clickOnButton就用不了,例如很多應(yīng)用用圖片作為button的說明,,clickOnButton就不奏效,。用坐標(biāo)又很麻煩不直觀??煞裼每丶?/span>id呢,?

怎么用id,,我也糾纏這個(gè)問題好幾天,網(wǎng)上中文資料搜不到,,搜英文,,英文搜不到換關(guān)鍵字搜,始終找不到一個(gè)比較完整的使用說明,。我只好自己一個(gè)個(gè)命令的試,,搞了2天總算找到一個(gè)方法,這個(gè)方法對(duì)于java高手可能不值一提,,但對(duì)我從未用過java的人來說,,確實(shí)費(fèi)了不少周折。

我的方法如下,,先獲取到控件的view

solo.getCurrentActivity().getResources().getIdentifier,,

然后再用solo.clickOnView即可。

 

我在使用的時(shí)候,,簡單的封裝了下,,封裝函數(shù)如下:

 Android及Robotium學(xué)習(xí)總結(jié)【環(huán)境變量,真機(jī)調(diào)試及根據(jù)id模擬按鍵】

private int clickCtrlById(String s, int t ){

     intctrl;

     View v;


     if( s == ""){

          return -1;

     }

     ctrl = solo.getCurrentActivity().getResources().getIdentifier(s,"id",TARGET_PACKAGE_ID);

    

     v = solo.getView(ctrl);

     solo.clickOnView(v);

     solo.sleep(t);        

     return 0;

}

    

例如已知某個(gè)控件的id(字符串格式)為"btn_dialpad_5",,調(diào)用方法如下:

clickCtrlById("btn_dialpad_5",400);

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多