appium启动日志分析

appium运行时的一些输出日志。不懂具体的命令是什么意思,所以查了一下:


adb shell getprop ro.build.version.release   获取系统版本:

adb shell getprop ro.build.version.sdk  获取系统sdk的版本:



https://www.jianshu.com/p/6bd0c3ed82fa

我应该如何允许访问非 SDK API?

可以通过使用 adb,在开发设备上允许访问非 SDK API。

若您想在 adb logcat 中显示 API 访问信息,您可通过以下命令更改 API 执行策略:

- adb shell settings put global hidden_api_policy_pre_p_apps  1

- adb shell settings put global hidden_api_policy_p_apps 1

更改回默认设置:

- adb shell settings delete global hidden_api_policy_pre_p_apps

- adb shell settings delete global hidden_api_policy_p_apps

以上命令不需要设备获得 Root 权限。

命令最后的数字分别表示:

https://www.jianshu.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:

如果设备不联机就不让执行,也就是实例状态是 device 时可以提前把命令转载在adb的命令器中,在命令器中的命令,在模拟器/设备连接之前是不会执行其他命令的,示例如下:

adb wait-for-device shell getprop

需要提醒的是,这些命令在所有的系统启动起来之前是不会启动adb的,

所以在所有的系统启动起来之前也不能执行其他的命令,例如,

运用install 的时候就需要Android包,这些包需要系统完全启动,例如:

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

上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生。


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

//安装settings app,辅助设置设备的网络,因为unicodeKeyboard设置为true,安装前先判断是否已经存在于设备上(注意这里是因为修改了源码所以才会去判断,没改过源码的是不判断的

,而是每次都会安装)

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

adb shell dumpsys命令是用于打印出当前系统信息(更切确的说是dumpsys命令,因为adb shell只是为了进入手机或模拟器的shell内核,使其能够执行dumpsys命令),可以在命令后面加指定的service name(比如activity,location),如果不加则默认打印出设备中所有service的信息

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

1.准备往设备上推送settings apk

2.打印出设备中io.appium.settings的信息

3.io.appium.settings 已经安装

4.使用apkanalyzer分析电脑上appium自带的包。/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/io.appium.settings/apks/settings_apk-debug.apk

可以看到电脑上的appium自带的一些安装包:


5.判断出手机上的已经安装的包比电脑上的版本低。

6.准备将电脑上的安装包更新到手机上。

7.获取手机上的安装包个数 ls -t -1 /data/local/tmp/appium_cache 2>&1 || echo _ERROR_ (这一步有啥用???)

8.将电脑上的apk,安装到手机上。

8.1 先在手机上创建缓存文件夹:adb -P 5037 -s Q5S5T19528002651 shell mkdir -p /data/local/tmp/appium_cache

8.2 将电脑上的包推送到手机上的缓存文件夹中: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 将安装包在手机上进行安装:adb -P 5037 -s Q5S5T19528002651 shell pm install -r -g /data/local/tmp/appium_cache/3d97225b036c28750562ef8962defee6b1af19a4.apk

(Android的文件系统是什么样的?????)




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

在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.

启动的方法为

adb shell

# am start -n {包(package)名}/{包名}.{活动(activity)名称}

(apk包的工程结构是什么样的?????)


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

看起来像是给 io.appium.settings apk设置访问 mock_location的权限。




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

更改系统设置中的参数(如修改系统默认输入法)。

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

//将IME设置为 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'

//将手机的默认输入法设置为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,判断是否已经安装,重装。

开始处理io.appium.uiautomator2.server.test ,判断是否已经安装,重装。

开始处理appium-uiautomator2-server-debug-androidTest.apk,判断是否已经安装,重装。

为什么每次启动都重装?不耗时吗?

为什么这三个包需要验签? io.appium.settings就不需要验签?

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中包含了一个工具名为Zipalign,它可以优化你的APK程序包,我们都知道APK的MIME其实就是一个Zip压缩文件,通过Zipalign可以让你的应用程序运行更快,Android123猜测从原理上来讲应该是优化Zip文件的解压速度,毕竟这个工具的文件名为zip对齐。

   在Android平台中,数据文件存储在apk文件中,可以多进程的访问,如果你开发过Win32可能知道程序的粒度对齐问题,不错虽然不是PE格式的文件,在Zip中一样,资源的访问可以通过更好的对其优化,而zipalign使用了4字节的边界对齐方式来影射内存,通过空间换时间的方式提高执行效率。


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

-p的意思是 parent,父目录。 如果父目录不存在,则创建父目录。

前面几行里也有创建这个文件夹,但是没有-p。 我发现,开源的东西,写的比较乱,因为各种人都在开发,开发的风格不一样,而且有可能并没有把之前的内容都看完,所以上面创建了一个目录,下面又重新创建一个一模一样的目录。


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是什么!!!!


[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

为什么会提示这个错误?



[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'

设置端口转发

您可以使用 forward 命令设置任意端口转发,将对特定主机端口上的请求转发到设备上的其他端口。以下示例介绍了如何设置主机端口 6100 到设备端口 7100 的转发:

    adb forward tcp:6100 tcp:7100

以下示例介绍了如何设置主机端口 6100 到 local:logd 的转发:

    adb forward tcp:6100 local:logd


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

查了网上的资料,说是hosts中没有设置localhost

设置一下,重启appium试一试。

然后悲催的是 appium又出现了别的问题:

找不到 io.appium.settings这个进程。

把之前开启的终端关掉(终端中使用了adb连接手机,难道是因为终端中连接了手机?),又把手机拔掉重新连上电脑,重启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

终于看到了这样的提示。看来是已经可以执行case了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355