appium啟動(dòng)日志分析

appium運(yùn)行時(shí)的一些輸出日志适袜。不懂具體的命令是什么意思件甥,所以查了一下:


adb shell getprop ro.build.version.release? ?獲取系統(tǒng)版本:

adb shell getprop ro.build.version.sdk??獲取系統(tǒng)sdk的版本:



http://www.reibang.com/p/6bd0c3ed82fa

我應(yīng)該如何允許訪問非 SDK API?

可以通過使用 adb目胡,在開發(fā)設(shè)備上允許訪問非 SDK API晓猛。

若您想在 adb logcat 中顯示 API 訪問信息,您可通過以下命令更改 API 執(zhí)行策略:

- adb shell settings put global hidden_api_policy_pre_p_apps ?1

- adb shell settings put global hidden_api_policy_p_apps 1

更改回默認(rèn)設(shè)置:

- adb shell settings delete global hidden_api_policy_pre_p_apps

- adb shell settings delete global hidden_api_policy_p_apps

以上命令不需要設(shè)備獲得 Root 權(quán)限险领。

命令最后的數(shù)字分別表示:

http://www.reibang.com/p/00441faae9ca?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation




https://www.bbsmax.com/A/RnJW72bEJq/

wait-for-device:

如果設(shè)備不聯(lián)機(jī)就不讓執(zhí)行,也就是實(shí)例狀態(tài)是?device?時(shí)可以提前把命令轉(zhuǎn)載在adb的命令器中,在命令器中的命令侨舆,在模擬器/設(shè)備連接之前是不會(huì)執(zhí)行其他命令的,示例如下:

adb wait-for-device shell getprop

需要提醒的是绢陌,這些命令在所有的系統(tǒng)啟動(dòng)起來之前是不會(huì)啟動(dòng)adb的挨下,

所以在所有的系統(tǒng)啟動(dòng)起來之前也不能執(zhí)行其他的命令,例如脐湾,

運(yùn)用install?的時(shí)候就需要Android包臭笆,這些包需要系統(tǒng)完全啟動(dòng),例如:

adb wait-for-device install <app>.apk

上面的命令只有連接上了模擬器/設(shè)備連接上了adb服務(wù)才會(huì)被執(zhí)行秤掌,而在Android系統(tǒng)完全啟動(dòng)前執(zhí)行就會(huì)有錯(cuò)誤發(fā)生愁铺。


https://blog.csdn.net/jq656021898/article/details/89491665

//安裝settings app,輔助設(shè)置設(shè)備的網(wǎng)絡(luò)闻鉴,因?yàn)閡nicodeKeyboard設(shè)置為true茵乱,安裝前先判斷是否已經(jīng)存在于設(shè)備上(注意這里是因?yàn)樾薷牧嗽创a所以才會(huì)去判斷,沒改過源碼的是不判斷的

孟岛,而是每次都會(huì)安裝)

https://blog.csdn.net/fengyulinde/article/details/78798055

adb shell dumpsys命令是用于打印出當(dāng)前系統(tǒng)信息(更切確的說是dumpsys命令,因?yàn)閍db shell只是為了進(jìn)入手機(jī)或模擬器的shell內(nèi)核,使其能夠執(zhí)行dumpsys命令),可以在命令后面加指定的service name(比如activity,location),如果不加則默認(rèn)打印出設(shè)備中所有service的信息

所以上圖中的命令的意思是:

1.準(zhǔn)備往設(shè)備上推送settings apk

2.打印出設(shè)備中io.appium.settings的信息

3.io.appium.settings 已經(jīng)安裝

4.使用apkanalyzer分析電腦上appium自帶的包瓶竭。/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/io.appium.settings/apks/settings_apk-debug.apk

可以看到電腦上的appium自帶的一些安裝包:


5.判斷出手機(jī)上的已經(jīng)安裝的包比電腦上的版本低。

6.準(zhǔn)備將電腦上的安裝包更新到手機(jī)上蚀苛。

7.獲取手機(jī)上的安裝包個(gè)數(shù) ls -t -1 /data/local/tmp/appium_cache 2>&1 || echo _ERROR_ (這一步有啥用在验?玷氏?堵未?)

8.將電腦上的apk,安裝到手機(jī)上盏触。

8.1 先在手機(jī)上創(chuàng)建緩存文件夾:adb -P 5037 -s Q5S5T19528002651 shell mkdir -p /data/local/tmp/appium_cache

8.2 將電腦上的包推送到手機(jī)上的緩存文件夾中:adb -P 5037 -s Q5S5T19528002651 push /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/io.appium.settings/apks/settings_apk-debug.apk /data/local/tmp/appium_cache/3d97225b036c28750562ef8962defee6b1af19a4.apk

8.3 將安裝包在手機(jī)上進(jìn)行安裝:adb -P 5037 -s Q5S5T19528002651 shell pm install -r -g /data/local/tmp/appium_cache/3d97225b036c28750562ef8962defee6b1af19a4.apk

(Android的文件系統(tǒng)是什么樣的渗蟹?块饺??雌芽?授艰?)




https://blog.csdn.net/xiezechang/article/details/8528446

在Android中,除了從界面上啟動(dòng)程序之外世落,還可以從命令行啟動(dòng)程序淮腾,使用的是命令行工具am.

啟動(dòng)的方法為

adb shell

# am start -n {包(package)名}/{包名}.{活動(dòng)(activity)名稱}

(apk包的工程結(jié)構(gòu)是什么樣的?屉佳?谷朝??武花?)


shell appops set io.appium.settings android\:mock_location allow??

看起來像是給 io.appium.settings apk設(shè)置訪問 mock_location的權(quán)限圆凰。




https://blog.csdn.net/xingchenxuanfeng/article/details/52023048

更改系統(tǒng)設(shè)置中的參數(shù)(如修改系統(tǒng)默認(rèn)輸入法)。

[AndroidDriver] Unsetting previous IME com.baidu.input_huawei/.ImeService? ?

//將IME設(shè)置為 appium的輸入法体箕?专钉??

[AndroidDriver] Setting IME to 'io.appium.settings/.UnicodeIME'? ?

// 激活 appium的輸入法

[ADB] Running '/Users/xialei/Library/Android/sdk/platform-tools/adb -P 5037 -s Q5S5T19528002651 shell ime enable io.appium.settings/.UnicodeIME'

//將手機(jī)的默認(rèn)輸入法設(shè)置為appium的輸入法

[ADB] Running '/Users/xialei/Library/Android/sdk/platform-tools/adb -P 5037 -s Q5S5T19528002651 shell ime set io.appium.settings/.UnicodeIME'


開始處理io.appium.uiautomator2.server累铅,判斷是否已經(jīng)安裝跃须,重裝。

開始處理io.appium.uiautomator2.server.test 娃兽,判斷是否已經(jīng)安裝回怜,重裝。

開始處理appium-uiautomator2-server-debug-androidTest.apk换薄,判斷是否已經(jīng)安裝玉雾,重裝。

為什么每次啟動(dòng)都重裝轻要?不耗時(shí)嗎复旬?

為什么這三個(gè)包需要驗(yàn)簽? io.appium.settings就不需要驗(yàn)簽冲泥?

Starting '/Users/xialei/Library/Android/sdk/build-tools/29.0.2/apksigner' with args '["verify","--print-certs","/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v4.3.0.apk"]'


[ADB] Using 'zipalign' from '/Users/xialei/Library/Android/sdk/build-tools/29.0.2/zipalign'

[ADB] /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk' is already zip-aligned. Doing nothing

https://blog.csdn.net/chengbai022/article/details/49944063

在Android SDK中包含了一個(gè)工具名為Zipalign驹碍,它可以優(yōu)化你的APK程序包,我們都知道APK的MIME其實(shí)就是一個(gè)Zip壓縮文件凡恍,通過Zipalign可以讓你的應(yīng)用程序運(yùn)行更快志秃,Android123猜測(cè)從原理上來講應(yīng)該是優(yōu)化Zip文件的解壓速度,畢竟這個(gè)工具的文件名為zip對(duì)齊嚼酝。

?? 在Android平臺(tái)中浮还,數(shù)據(jù)文件存儲(chǔ)在apk文件中,可以多進(jìn)程的訪問闽巩,如果你開發(fā)過Win32可能知道程序的粒度對(duì)齊問題钧舌,不錯(cuò)雖然不是PE格式的文件担汤,在Zip中一樣,資源的訪問可以通過更好的對(duì)其優(yōu)化洼冻,而zipalign使用了4字節(jié)的邊界對(duì)齊方式來影射內(nèi)存崭歧,通過空間換時(shí)間的方式提高執(zhí)行效率。


shell mkdir -p /data/local/tmp/appium_cache

-p的意思是 parent撞牢,父目錄率碾。 如果父目錄不存在,則創(chuàng)建父目錄屋彪。

前面幾行里也有創(chuàng)建這個(gè)文件夾播掷,但是沒有-p。 我發(fā)現(xiàn)撼班,開源的東西歧匈,寫的比較亂,因?yàn)楦鞣N人都在開發(fā)砰嘁,開發(fā)的風(fēng)格不一樣件炉,而且有可能并沒有把之前的內(nèi)容都看完,所以上面創(chuàng)建了一個(gè)目錄矮湘,下面又重新創(chuàng)建一個(gè)一模一樣的目錄斟冕。


adb -P 5037 -s Q5S5T19528002651 shell pm list instrumentation

instrumentation是什么??

https://www.cnblogs.com/insist8089/p/6897037.html

https://developer.android.google.cn/studio/command-line/adb

看了一堆解釋缅阳,依然不明白instrumentation是什么?纳摺!J臁秀撇!


[UiAutomator2] Forwarding UiAutomator2 Server port 6790 to 8200

[ADB] Forwarding system: 8200 to device: 6790

[ADB] Running '/Users/xialei/Library/Android/sdk/platform-tools/adb -P 5037 -s Q5S5T19528002651 forward tcp\:8200 tcp\:6790'


[UiAutomator2] No app capability. Assuming it is already on the device

https://blog.csdn.net/python_jeff/article/details/101348248#android

為什么會(huì)提示這個(gè)錯(cuò)誤?



[UiAutomator2] Forwarding UiAutomator2 Server port 6790 to 8200

[ADB] Forwarding system: 8200 to device: 6790

[ADB] Running '/Users/xialei/Library/Android/sdk/platform-tools/adb -P 5037 -s Q5S5T19528002651 forward tcp\:8200 tcp\:6790'

設(shè)置端口轉(zhuǎn)發(fā)

您可以使用?forward?命令設(shè)置任意端口轉(zhuǎn)發(fā)向族,將對(duì)特定主機(jī)端口上的請(qǐng)求轉(zhuǎn)發(fā)到設(shè)備上的其他端口呵燕。以下示例介紹了如何設(shè)置主機(jī)端口 6100 到設(shè)備端口 7100 的轉(zhuǎn)發(fā):

? ? adb forward tcp:6100 tcp:7100

以下示例介紹了如何設(shè)置主機(jī)端口 6100 到 local:logd 的轉(zhuǎn)發(fā):

? ? adb forward tcp:6100 local:logd


[UiAutomator2] No obsolete sessions have been detected (Error: getaddrinfo ENOTFOUND localhost localhost:8200)

查了網(wǎng)上的資料,說是hosts中沒有設(shè)置localhost

設(shè)置一下件相,重啟appium試一試再扭。

然后悲催的是 appium又出現(xiàn)了別的問題:

找不到 io.appium.settings這個(gè)進(jìn)程。

把之前開啟的終端關(guān)掉(終端中使用了adb連接手機(jī)夜矗,難道是因?yàn)榻K端中連接了手機(jī)泛范?),又把手機(jī)拔掉重新連上電腦紊撕,重啟appium罢荡。可以了。

[WD Proxy] Got response with status 200: {"sessionId":"None","value":{"ready":true,"message":"UiAutomator2 Server is ready to accept commands"}}

[UiAutomator2] The initialization of the instrumentation process took 3096ms

終于看到了這樣的提示柠傍。看來是已經(jīng)可以執(zhí)行case了辩稽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惧笛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逞泄,更是在濱河造成了極大的恐慌患整,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷众,死亡現(xiàn)場(chǎng)離奇詭異各谚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)到千,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門昌渤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人憔四,你說我怎么就攤上這事膀息。” “怎么了了赵?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵潜支,是天一觀的道長。 經(jīng)常有香客問我柿汛,道長冗酿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任络断,我火速辦了婚禮裁替,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘貌笨。我一直安慰自己胯究,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布躁绸。 她就那樣靜靜地躺著裕循,像睡著了一般。 火紅的嫁衣襯著肌膚如雪净刮。 梳的紋絲不亂的頭發(fā)上剥哑,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音淹父,去河邊找鬼株婴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的困介。 我是一名探鬼主播大审,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼座哩!你這毒婦竟也來了徒扶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤根穷,失蹤者是張志新(化名)和其女友劉穎姜骡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屿良,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圈澈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尘惧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片康栈。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖喷橙,靈堂內(nèi)的尸體忽然破棺而出谅将,到底是詐尸還是另有隱情,我是刑警寧澤重慢,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布饥臂,位于F島的核電站,受9級(jí)特大地震影響似踱,放射性物質(zhì)發(fā)生泄漏隅熙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一核芽、第九天 我趴在偏房一處隱蔽的房頂上張望囚戚。 院中可真熱鬧,春花似錦轧简、人聲如沸驰坊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拳芙。三九已至,卻和暖如春皮璧,著一層夾襖步出監(jiān)牢的瞬間舟扎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工悴务, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睹限,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像羡疗,于是被迫代替她去往敵國和親染服。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359