【移動(dòng)應(yīng)用開發(fā)技術(shù)】Ant如何打包UIAutomator項(xiàng)目用到的第三方JAR包_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Ant如何打包UIAutomator項(xiàng)目用到的第三方JAR包_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Ant如何打包UIAutomator項(xiàng)目用到的第三方JAR包_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論