


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Ant如何打包UIAutomator項(xiàng)目用到的第三方JAR包
本文章主要描述UIAutomator項(xiàng)目中引用到第三方Jar包的時(shí)候,按照正常的打包方式碰到的各種問(wèn)題,以及最終解決的思路和辦法。在本人的一個(gè)示例項(xiàng)目中引用到了單元測(cè)試框架hamcrest的jar包,在項(xiàng)目目錄下執(zhí)行antbuild的時(shí)候出現(xiàn)以下的問(wèn)題/20140924101848578?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh2YmFpdGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast源碼如下:package.UIAutomatorDemo;importcom.android.uiautomator.core.UiDevice;importcom.android.uiautomator.core.UiObject;importcom.android.uiautomator.core.UiObjectNotFoundException;importcom.android.uiautomator.core.UiScrollable;importcom.android.uiautomator.core.UiSelector;importcom.android.uiautomator.testrunner.UiAutomatorTestCase;importstaticorg.hamcrest.Matchers.*;importstaticorg.hamcrest.MatcherAssert.assertThat;publicclassNotePadTestextendsUiAutomatorTestCase{ publicvoidtestDemo()throwsUiObjectNotFoundException{ UiDevicedevice=getUiDevice(); device.pressHome(); //StartNotepad UiObjectappNotes=newUiObject(newUiSelector().text("Notes")); appNotes.click(); //Sleep3secondstilltheappgetready try{ Thread.sleep(3000); }catch(InterruptedExceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } //Evokethesystemmenuoption device.pressMenu(); UiObjectaddNote=newUiObject(newUiSelector().text("Addnote")); addNote.click(); //Addanewnote UiObjectnoteContent=newUiObject(newUiSelector().className("android.widget.EditText")); noteContent.clearTextField(); noteContent.setText("Note1"); device.pressMenu(); UiObjectsave=newUiObject(newUiSelector().text("Save")); save.click(); //Findoutthenewaddednoteentry UiScrollablenoteList=newUiScrollable(newUiSelector().className("android.widget.ListView")); //UiScrollablenoteList=newUiScrollable(newUiSelector().scrollable(true)); UiObjectnote=null; if(noteList.exists()){ note=noteList.getChildByText(newUiSelector().className("android.widget.TextView"),"Note1",true); //note=noteList.getChildByText(newUiSelector().text("Note1"),"Note1",true); } else{ note=newUiObject(newUiSelector().text("Note1")); } assertThat(note,notNullValue()); note.longClick(); UiObjectdelete=newUiObject(newUiSelector().text("Delete")); delete.click(); }}2.1編譯問(wèn)題分析根據(jù)上圖的錯(cuò)誤log,很明顯我們?cè)趯?shí)行antbuild的時(shí)候ant并沒(méi)有把需要的第三方j(luò)ar包加入進(jìn)去進(jìn)行編譯。根據(jù)上一篇文章《Android自動(dòng)化測(cè)試(UiAutomator)簡(jiǎn)要介紹》描述,我們?cè)诖虬黆IAutomator項(xiàng)目時(shí)會(huì)執(zhí)行一個(gè)命令“androidcreateuitest-project-n<name>-t<android-sdk-ID>-p<path>”來(lái)在項(xiàng)目頂層目錄上生成一個(gè)build.xml文件,這個(gè)文件就ant用來(lái)build我們的UIAutomator項(xiàng)目需要用到的配置描述文件。那么很自然我們就會(huì)想到去該文件下看是否有把我們需要的jar包給包含進(jìn)來(lái)。打開該文件查看時(shí),發(fā)覺(jué)相當(dāng)精簡(jiǎn),并沒(méi)有太多的東西可看,但是注意到文件末尾引用了我們AndroidSDK下面的一個(gè)文件“${sdk.dir}/tools/ant/uibuild.xml”:打開該文件,里面盡是build相關(guān)的配置,所以問(wèn)題很有可能出現(xiàn)在這里。找到編譯相關(guān)的Section,確實(shí)沒(méi)有看到有指定第三方j(luò)ar包的classpath:2.2編譯問(wèn)題解決辦法那么很自然,我們應(yīng)該在這里指定我們第三方j(luò)ar包的classpath,以便ant在build的時(shí)候知道從哪里拿到我們的第三方包。我這里的例子是把我項(xiàng)目頂層目錄下的“l(fā)ibs”文件夾包含的jar包都引用進(jìn)來(lái),該目錄就是我存放第三方j(luò)ar包的位置。運(yùn)行“antbuild”,成功!2.3運(yùn)行問(wèn)題分析build完成后,滿心歡喜的把編譯好的jar包push到安卓機(jī)器上運(yùn)行,前期運(yùn)行的沒(méi)有問(wèn)題,但一到調(diào)用到第三方Jar包相關(guān)API的時(shí)候Exception就出來(lái)了/20140924110130338?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh2YmFpdGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast編譯沒(méi)有問(wèn)題,運(yùn)行時(shí)出現(xiàn)問(wèn)題,那么很有可能就是剛才解決編譯問(wèn)題的時(shí)候只是確保項(xiàng)目在編譯的時(shí)候能找到第三方j(luò)ar包,但是并沒(méi)有在編譯后把相應(yīng)的jar包一并打包到目標(biāo)jar包里面去。經(jīng)過(guò)一番google,相信還是build配置的問(wèn)題,返回”${sdk.dir}/tools/ant/uibuild.xml“,發(fā)現(xiàn)確實(shí)打包section沒(méi)有看到第三方j(luò)ar包相應(yīng)的信息:2.4運(yùn)行問(wèn)題解決辦法根據(jù)google提示,最終修改成如下,問(wèn)題最終解決!作者自主博客微信CSDN天地會(huì)珠海分舵
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年商丘道路運(yùn)輸從業(yè)資格證
- 代加工用合同范本
- 鄉(xiāng)鎮(zhèn)開店送貨合同范本
- 分兩期買車合同范例
- 公路制式版合同范本
- 農(nóng)機(jī)抵押貨款合同范本
- 農(nóng)業(yè)搭棚工程合同范例
- 借貸型買賣合同范本
- 內(nèi)部法律顧問(wèn)合同范本
- 單位門鎖維修合同范本
- GB/T 3498-2008潤(rùn)滑脂寬溫度范圍滴點(diǎn)測(cè)定法
- GB/T 31586.2-2015防護(hù)涂料體系對(duì)鋼結(jié)構(gòu)的防腐蝕保護(hù)涂層附著力/內(nèi)聚力(破壞強(qiáng)度)的評(píng)定和驗(yàn)收準(zhǔn)則第2部分:劃格試驗(yàn)和劃叉試驗(yàn)
- GB/T 15175-2012固體激光器主要參數(shù)測(cè)量方法
- 建筑工程施工進(jìn)度計(jì)劃網(wǎng)絡(luò)圖和橫道圖
- HP工作站BIOS詳解參考模板
- 員工培訓(xùn)、考試、積分記錄表
- 微專題:地理時(shí)空“尺度觀”思想課件
- 大學(xué)普通物理-習(xí)題答案(程守洙-江之勇主編-第六版)課件
- 風(fēng)冷熱泵主機(jī)改造-模塊機(jī)匯總
- 烏司他丁課件
- 《工程化學(xué)》全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論