如何查看App的運(yùn)行日志
使用Android Studio查看手機(jī)日志,步驟如下:
1. 在Android Studio中打開(kāi)一個(gè)工程,進(jìn)入主界面。

2. 點(diǎn)擊底部“Android Monitor”,打開(kāi)安卓連接設(shè)備信息查看頁(yè)面。
3. 通過(guò)數(shù)據(jù)線將手機(jī)與電腦連接,并在手機(jī)上打開(kāi)開(kāi)發(fā)者選項(xiàng)。
查看日志的常用方式:
1. 使用Xcode進(jìn)行調(diào)試時(shí),可以直接在控制臺(tái)輸出面板上查看App的日志。
2. 通過(guò)Xcode的“Windows”菜單打開(kāi)“Devices”界面,選擇連接的手機(jī),查看運(yùn)行進(jìn)程的日志輸出。

日志分析:
點(diǎn)擊“Open Console”按鈕,可以打開(kāi)詳細(xì)的日志信息窗口。通過(guò)關(guān)鍵詞搜索,可以找到有用的信息。在AndroidStudio的“Tools”菜單下的“Android Device Monitor”里,也可以進(jìn)行日志搜索以查找問(wèn)題。
對(duì)于iOS設(shè)備,可以使用idevicesyslog查看日志。蘋(píng)果系統(tǒng)自帶的這個(gè)工具無(wú)需安裝,操作簡(jiǎn)便,非常方便。
Appium啟動(dòng)日志分析
Appium運(yùn)行時(shí)會(huì)產(chǎn)生一些輸出日志。如果你對(duì)某個(gè)命令的具體含義不太清楚,可以查詢(xún)一下:

例如,“adb shell getprop ro.build.version.release”用于獲取系統(tǒng)版本信息,“adb shell getprop ro.build.version.sdk”則用于獲取系統(tǒng)SDK的版本。
訪問(wèn)非SDK API的日志允許
如果你想允許訪問(wèn)非SDK API,可以通過(guò)以下步驟操作:
1. 使用ADB在開(kāi)發(fā)設(shè)備上更改API執(zhí)行策略。
2. 在adb logcat中顯示API訪問(wèn)信息。

具體命令為:
1. “adb shell settings put global hidden_api_policy_pre_p_apps 1”
2. “adb shell settings put global hidden_api_policy_p_apps 1”
若要恢復(fù)默認(rèn)設(shè)置,執(zhí)行以下命令:
1. “adb shell settings delete global hidden_api_policy_pre_p_apps”

2. “adb shell settings delete global hidden_api_policy_p_apps”
這些命令的執(zhí)行不需要設(shè)備獲得Root權(quán)限。根據(jù)個(gè)人的習(xí)慣和需求選擇合適的工具來(lái)查看和分析App的日志,可以更高效地找到問(wèn)題并解決。Android設(shè)備ADB命令與操作詳解
一、ADB基本介紹與wait-for-device命令
ADB(Android Debug Bridge)是一個(gè)通用命令行工具,它允許開(kāi)發(fā)者與設(shè)備進(jìn)行通信。在Android系統(tǒng)完全啟動(dòng)之前,一些ADB命令不會(huì)執(zhí)行,如“wait-for-device”。這是因?yàn)檫@些命令需要在系統(tǒng)完全啟動(dòng)并響應(yīng)ADB命令后才能執(zhí)行。例如,“adb wait-for-device shell getprop”,這個(gè)命令只有在設(shè)備啟動(dòng)并連接到ADB服務(wù)后才會(huì)被執(zhí)行。
二、關(guān)于系統(tǒng)啟動(dòng)與命令執(zhí)行

在Android系統(tǒng)完全啟動(dòng)之前,除了基本的設(shè)備連接檢查命令外,其他命令如“install”都無(wú)法執(zhí)行。這是因?yàn)榘惭b應(yīng)用需要系統(tǒng)服務(wù)完全啟動(dòng)并響應(yīng)ADB命令。例如,“adb wait-for-device install
三、關(guān)于應(yīng)用安裝與設(shè)置
在安裝應(yīng)用時(shí),特別是在安裝了自定義源碼的應(yīng)用時(shí),有些步驟需要注意。例如,在安裝settings app時(shí),由于涉及到設(shè)備的網(wǎng)絡(luò)設(shè)置(可能因?yàn)閡nicodeKeyboard設(shè)置為true),需要在安裝前判斷該應(yīng)用是否已存在于設(shè)備上。如果未修改過(guò)源碼,通常會(huì)每次都進(jìn)行安裝操作。而在使用adb shell安裝應(yīng)用時(shí),也需要注意設(shè)備的連接狀態(tài)和系統(tǒng)的啟動(dòng)狀態(tài)。
四、關(guān)于打印系統(tǒng)信息及apkanalyzer的使用
使用adb shell dumpsys命令可以打印出設(shè)備的系統(tǒng)信息。通過(guò)指定不同的service name(如activity, location),可以獲取特定服務(wù)的信息。如果不指定service name,將默認(rèn)打印所有服務(wù)的信息。還可以使用apkanalyzer來(lái)分析電腦上的appium自帶包,幫助理解其結(jié)構(gòu)和內(nèi)容。這些工具和命令對(duì)于開(kāi)發(fā)者來(lái)說(shuō)是非常有用的,能夠幫助他們更好地理解和調(diào)試Android設(shè)備和應(yīng)用。

五、總結(jié)
Appium安裝包的管理與操作
一、了解Appium的安裝包情況
當(dāng)我們打開(kāi)Appium應(yīng)用時(shí),可以觀察到其自帶的一系列安裝包。這些安裝包是Appium運(yùn)行所必需的組件,對(duì)于測(cè)試人員來(lái)說(shuō),了解這些安裝包的用途和版本情況至關(guān)重要。
二、識(shí)別手機(jī)已安裝包的版本情況

通過(guò)對(duì)比手機(jī)上的已安裝包的版本與電腦上的版本,我們可以發(fā)現(xiàn)手機(jī)上的版本往往較低。為了確保測(cè)試的有效性和準(zhǔn)確性,我們需要將手機(jī)上的安裝包更新到與電腦上的版本相匹配或更高的版本。
三、準(zhǔn)備更新手機(jī)上的安裝包
在更新之前,我們需要先獲取手機(jī)上的安裝包數(shù)量。通過(guò)執(zhí)行特定的命令,如“l(fā)s -t -1 /data/local/tmp/appium_cache 2>&1 || echo _ERROR_”,我們可以了解到手機(jī)上的緩存情況,確保更新過(guò)程的順利進(jìn)行。
四、將電腦上的apk安裝到手機(jī)上
為了將電腦上的apk安裝包安裝到手機(jī)上,我們需要進(jìn)行以下步驟:

1. 在手機(jī)上創(chuàng)建緩存文件夾,通過(guò)命令“adb -P 5037 -s Q5S5T19528002651 shell mkdir -p /data/local/tmp/appium_cache”實(shí)現(xiàn)。
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”。
3. 使用命令“adb -P 5037 -s Q5S5T19528002651 shell pm install -r -g /data/local/tmp/appium_cache/3d97225b036c28750562ef8962defee6b1af19a4.apk”在手機(jī)上進(jìn)行安裝。
五、深入了解Android文件系統(tǒng)與命令行操作
Android的文件系統(tǒng)采用分層結(jié)構(gòu),通過(guò)特定的路徑和文件夾來(lái)存儲(chǔ)應(yīng)用、系統(tǒng)和用戶(hù)數(shù)據(jù)。除了從界面上啟動(dòng)程序外,我們還可以從命令行啟動(dòng)程序,使用的工具是am。啟動(dòng)的方法為“adb shell am start -n {包名}/{活動(dòng)名稱(chēng)}”。了解這些操作有助于我們更深入地掌握Android系統(tǒng)的運(yùn)作機(jī)制。

apk包的工程結(jié)構(gòu)也是一個(gè)值得探究的話題。一個(gè)完整的apk包包含了應(yīng)用的所有文件和資源,如代碼、圖片、配置文件等。這些文件和資源按照一定的結(jié)構(gòu)和格式組織在一起,構(gòu)成了我們?cè)谑謾C(jī)上看到的完整應(yīng)用。
配置Appium的Android模擬環(huán)境
一、設(shè)置Mock Location權(quán)限
通過(guò)執(zhí)行命令“shell appops set io.appium.settings android:mock_location allow”,我們?yōu)閕o.appium.settings apk賦予了訪問(wèn)mock_location的權(quán)限。這一步驟是確保Appium能夠在測(cè)試過(guò)程中模擬地理位置,從而更真實(shí)地反映應(yīng)用在實(shí)際環(huán)境中的表現(xiàn)。二、更改系統(tǒng)設(shè)置參數(shù)
在系統(tǒng)設(shè)置中,我們可能會(huì)遇到需要修改默認(rèn)輸入法的情況。例如,將IME(輸入法編輯器)從默認(rèn)的百度輸入法切換為Appium的輸入法。三、設(shè)置Appium輸入法

四、通過(guò)ADB命令設(shè)置默認(rèn)輸入法
運(yùn)行ADB命令,將手機(jī)默認(rèn)輸入法設(shè)置為Appium的輸入法。這一步驟是為了確保自動(dòng)化測(cè)試過(guò)程中,輸入操作能夠準(zhǔn)確無(wú)誤地進(jìn)行。這個(gè)過(guò)程涉及到判斷并處理io.appium.uiautomator2.server、io.appium.uiautomator2.server.test以及appium-uiautomator2-server-debug-androidTest.apk的安裝狀態(tài),必要時(shí)進(jìn)行重新安裝。五、關(guān)于重裝和驗(yàn)簽的疑問(wèn)
每次啟動(dòng)都需要重裝這些包的原因可能是為了確保包的最新版本和正確的配置。雖然這會(huì)耗費(fèi)一些時(shí)間,但對(duì)于確保測(cè)試的準(zhǔn)確性和穩(wěn)定性是必要的。至于為什么這三個(gè)包需要驗(yàn)簽,而io.appium.settings不需要,這可能與包的安全性、來(lái)源和系統(tǒng)的配置有關(guān)。驗(yàn)簽是為了確保包沒(méi)有被篡改,是安全和可信的。一、啟動(dòng)APK簽名驗(yàn)證
在Android開(kāi)發(fā)中,對(duì)應(yīng)用的簽名驗(yàn)證是一個(gè)關(guān)鍵步驟。從給定的日志中可以看到,我們正在使用位于特定路徑的“apksigner”工具來(lái)驗(yàn)證一個(gè)APK文件的簽名。這個(gè)操作確保了應(yīng)用的完整性和安全性,對(duì)于確保應(yīng)用沒(méi)有在運(yùn)行過(guò)程中被篡改至關(guān)重要。
二、利用Zipalign優(yōu)化APK

我們知道,APK文件的實(shí)質(zhì)是一個(gè)Zip壓縮包。在Android SDK中,有一個(gè)名為Zipalign的工具,它可以?xún)?yōu)化APK文件。通過(guò)Zipalign,我們可以提高應(yīng)用程序的運(yùn)行速度。其原理在于優(yōu)化Zip文件的解壓速度,通過(guò)空間換時(shí)間的方式提高執(zhí)行效率。
三、理解對(duì)齊與資源訪問(wèn)
在Android平臺(tái)上,數(shù)據(jù)文件存儲(chǔ)在apk文件中,可以多進(jìn)程訪問(wèn)。類(lèi)似于Win32中的粒度對(duì)齊問(wèn)題,雖然APK文件不是PE格式,但在Zip文件中也存在資源訪問(wèn)的優(yōu)化問(wèn)題。Zipalign使用了4字節(jié)的邊界對(duì)齊方式來(lái)映射內(nèi)存,從而提高資源的訪問(wèn)效率。
四、創(chuàng)建緩存目錄
在給出的日志中,可以看到正在創(chuàng)建一個(gè)名為“appium_cache”的目錄于“/data/local/tmp”路徑下。創(chuàng)建這個(gè)目錄是為了存儲(chǔ)緩存文件,以便于應(yīng)用程序的運(yùn)行。而“-p”參數(shù)的意思是如果父目錄不存在,則一并創(chuàng)建。

五、關(guān)于Instrumentation的理解
在Android開(kāi)發(fā)中,Instrumentation是一種測(cè)試框架,用于測(cè)試應(yīng)用程序的各個(gè)組件。它允許我們編寫(xiě)代碼來(lái)模擬用戶(hù)與應(yīng)用程序的交互,從而驗(yàn)證應(yīng)用程序的功能和性能。盡管對(duì)于未接觸過(guò)此概念的人來(lái)說(shuō)可能難以理解,但簡(jiǎn)而言之,Instrumentation是一種用于測(cè)試Android應(yīng)用程序的工具。
綜上,上述內(nèi)容主要描述了在Android開(kāi)發(fā)過(guò)程中,對(duì)APK的簽名驗(yàn)證、優(yōu)化、資源訪問(wèn)、緩存目錄創(chuàng)建以及Instrumentation測(cè)試的相關(guān)操作與概念的解釋。希望這樣的解釋能幫助你更好地理解這些內(nèi)容。 UiAutomator2端口轉(zhuǎn)發(fā)問(wèn)題及解決方案
一、問(wèn)題背景
在使用UiAutomator2進(jìn)行Android自動(dòng)化測(cè)試時(shí),可能會(huì)遇到端口轉(zhuǎn)發(fā)的問(wèn)題。系統(tǒng)提示將UiAutomator2 Server的6790端口轉(zhuǎn)發(fā)到8200。這是進(jìn)行自動(dòng)化測(cè)試時(shí)的一個(gè)常見(jiàn)設(shè)置,用以確保測(cè)試過(guò)程中的通信暢通。

二、錯(cuò)誤提示分析
出現(xiàn)錯(cuò)誤提示“[UiAutomator2] No obsolete sessions have been detected(Error: getaddrinfo ENOTFOUND localhost localhost:8200)”時(shí),通常意味著系統(tǒng)無(wú)法識(shí)別“l(fā)ocalhost:8200”。這可能是由于hosts文件中沒(méi)有正確設(shè)置localhost導(dǎo)致的。
三、端口轉(zhuǎn)發(fā)設(shè)置
在Android開(kāi)發(fā)中,使用ADB(Android Debug Bridge)可以進(jìn)行端口轉(zhuǎn)發(fā)。通過(guò)設(shè)置端口轉(zhuǎn)發(fā),可以將主機(jī)上的特定端口請(qǐng)求轉(zhuǎn)發(fā)到設(shè)備上的其他端口。例如,要將主機(jī)端口6100轉(zhuǎn)發(fā)到設(shè)備端口7100,可以使用以下命令:
```bash

adb forward tcp:6100 tcp:7100
```
同樣,如果要轉(zhuǎn)發(fā)到local:logd,命令如下:
```bash
adb forward tcp:6100 local:logd

```
四、解決思路
針對(duì)上述錯(cuò)誤,可以嘗試在hosts文件中添加localhost的相應(yīng)設(shè)置。hosts文件通常位于系統(tǒng)盤(pán)(如C盤(pán))的某個(gè)目錄下,如“C:WindowsSystem32driversetchosts”。在該文件中添加如下行:
```bash
127.0.0.1 localhost

```
保存后,重啟Appium嘗試重新進(jìn)行自動(dòng)化測(cè)試。
五、注意事項(xiàng)
1. 確保ADB和UiAutomator2的版本兼容,避免由于版本不匹配導(dǎo)致的問(wèn)題。
2. 在進(jìn)行端口轉(zhuǎn)發(fā)設(shè)置時(shí),注意端口號(hào)的正確性,避免出錯(cuò)。

3. 修改hosts文件后,可能需要重啟設(shè)備或Appium服務(wù)才能使設(shè)置生效。
遇到UiAutomator2端口轉(zhuǎn)發(fā)問(wèn)題時(shí),通過(guò)正確的設(shè)置和調(diào)試,應(yīng)該能夠順利解決。如果遇到更復(fù)雜的問(wèn)題,建議查閱官方文檔或?qū)で笊鐓^(qū)幫助。遇到Appium的疑難雜癥:無(wú)法找到io.appium.settings進(jìn)程
問(wèn)題的出現(xiàn)
在使用Appium進(jìn)行自動(dòng)化測(cè)試時(shí),突然遇到了一個(gè)問(wèn)題:無(wú)法找到io.appium.settings這個(gè)進(jìn)程。之前開(kāi)啟的終端中使用了adb連接手機(jī),是不是因?yàn)檫@里連接了手機(jī)導(dǎo)致了問(wèn)題呢?
問(wèn)題的解決

嘗試了一些解決方法:關(guān)掉之前的終端,拔掉手機(jī)重新連接電腦,并重啟Appium。幸運(yùn)的是,問(wèn)題得到了解決。
Appium重新運(yùn)行后,收到了這樣的響應(yīng)信息:
[WD Proxy] Got response with status 200,其中包含了"UiAutomator2 Server is ready to accept commands"的提示,說(shuō)明Appium已經(jīng)準(zhǔn)備好接受命令了。而[UiAutomator2]的初始化過(guò)程也耗費(fèi)了3096ms。
終于可以執(zhí)行測(cè)試用例了。
iOS實(shí)時(shí)查看App運(yùn)行日志的方法

在iOS開(kāi)發(fā)中,實(shí)時(shí)查看App的運(yùn)行日志是非常有必要的。本文將介紹如何實(shí)時(shí)查看輸出在console控制臺(tái)的日志。
版本與工具安裝
當(dāng)前使用的版本號(hào)為9.4.1。要實(shí)時(shí)查看iOS設(shè)備的日志,安裝libimobiledevice是非常簡(jiǎn)單的。只需在命令行中輸入相關(guān)指令即可。
如何使用idevicesyslog查看日志
1. 使用idevicesyslog工具。這是一個(gè)蘋(píng)果系統(tǒng)自帶的工具,不用安裝,不用命令行,操作起來(lái)非常傻瓜式,非常方便。

2. 通過(guò)idevicesyslog,我們可以實(shí)時(shí)查看我們想要的日志。
根據(jù)個(gè)人習(xí)慣來(lái)選擇工具即可。實(shí)時(shí)查看iOS App的運(yùn)行日志,可以幫助我們更好地進(jìn)行調(diào)試和排查問(wèn)題,提高開(kāi)發(fā)效率。
以上就是關(guān)于在使用Appium過(guò)程中遇到的問(wèn)題及解決方法,以及實(shí)時(shí)查看iOS App運(yùn)行日志的方法介紹。希望對(duì)你有所幫助。