通用技术 Android 及 iOS 常用操作命令

陈恒捷 · 2015年12月11日 · 最后由 拉拉肥👧 回复于 2024年01月29日 · 3989 次阅读
本帖已被设为精华帖!

最近做 iOS 相关的事情比较多,发现其实 iOS 下还是有很多和 android 可以对应的操作,所以在此记录一下。

备注: iOS 用到的ideviceinstalleridevicesyslog 等命令安装命令为:brew install libimobiledevice

应用相关

1、 安装应用(真机)

Android

adb install xxx.apk

iOS

ideviceinstaller -i xxx.ipa

2、 卸载应用(真机)

Android

adb uninstall <packageName>

iOS

ideviceinstaller -U <bundleId>

3、 获取应用唯一标识

其实也不算唯一标识了,只是大部分操作会用到。

Android: packageName
获取方式很多,只举其中一个比较容易的:

$ apktool d xxx.apk -o xxx
$ cd xxx
$ cat AndroidManifest.xml | grep -o "package=\".*\"" | sed "s/package=\"//g" | sed "s/\"//g"
com.test

iOS:bundleId

$ unzip xxx.ipa
$ cd Payload/xxx.app
$ defaults read `pwd`/Info CFBundleIdentifier
com.test

4、从源码构建应用安装包

这里只举 debug 包

android(现在 android studio 项目已经很流行了,所以就不说 ant 了)

$ cd /source-folder/
# 注意:没***情况下貌似不能自动下载 gradle ,那么可以自行下载 gradle 后用 gradle 的 bin 文件代替此处的 gradlew 。
$ ./gradlew build
# build 完的 apk 包放在 Application/build/outputs/apk 中

iOS 真机

$ cd /source-folder/
$ PROJECT=<your-project-name>
$ xcodebuild clean -project $PROJECT.xcodeproj -configuration Debug -alltargets
$ xcodebuild archive -project $PROJECT.xcodeproj -scheme $PROJECT -archivePath $PROJECT.xcarchive
# 注意,末尾的 exportProvisioningProfile 参数值是在 Xcode 的 Performance->Accounts->Apple ID->View Details 窗口的下半部分看到的名称。如 iOS Team Provisioning Profile: chj.ToDoList
$ xcodebuild -exportArchive -archivePath $PROJECT.xcarchive -exportPath $PROJECT -exportFormat ipa -exportProvisioningProfile "your provision profile"
# build 完的 ipa 包直接就放在当前目录

设备相关

1、查看设备中的应用列表

Android

$ adb shell pm list packages
package:com.miui.gallery
package:com.xiaomi.tv.gallerylockscreen
...

如果有 drozer 的话能显示得更清晰

dz> run app.package.list
com.miui.gallery (图库)
com.xiaomi.tv.gallerylockscreen (锁屏画报)
...

iOS

$ ideviceinstaller [-u <device-udid>] -l
Total: 46 apps
com.xiaojukeji.didi - 滴滴出行 4.1.5.0
com.tencent.mqq - QQ 6.0.0.424
...

2、获取真机实时日志

Android

adb [-s <device-name>] logcat

iOS

idevicesyslog [-u <device-udid>]

3、获取当前连接的设备列表

Android

$ adb devices

iOS

# 注意:这里列出的设备包括模拟器及 mac 电脑本身
$ instruments -s devices

补充:
mac 安装以下内容:

brew install usbmuxd
brew install ideviceinstaller

可以获取 ios 手机的 udid

idevice_id -l

对于脚本中要使用默认设备的场景很方便。

暂时只想到这么多。大家如果有其他需要也可以提出,我找找有没有两个平台都能对应上的操作。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 27 条回复 时间 点赞

ideviceinfo 获取 ios 手机信息
ideviceinfo -x 获取 ios 手机信息,并以 xml 形式显示

ideviceinfo -k ProductType 获取手机型号
ideviceinfo -k ProductVersion 获取系统版本
ideviceinfo -k DeviceName 获取手机名称

jmei 回复

这是自问自答?

lynn_qin 回复

brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install ideviceinstaller
brew link --overwrite ideviceinstaller

参照 https://github.com/libimobiledevice/ideviceinstaller/issues/47

mac 安装以下内容:
brew install usbmuxd
brew install ideviceinstaller
可以获取 ios 手机的 udid
idevice_id -l

#11 楼 @happystoneERROR: Could not connect to lockdownd, error code -21 是怎么回事 刚用 mac,不知道怎么解决

谢谢分享

不是说手机的 udid 不能随意泄露么?ideviceinstaller 这样直接获取是否。。。

对比学习最好了,赞👍🏻

#8 楼 @ghoul 这不是泄露吧,你用 iTunes 不也拿到么
另外,大把应用会获取 udid ,你不泄露不代表安全。

给 10086 个赞

—— 来自 TesterHome 官方 安卓客户端

给 10086 个赞👍

—— 来自 TesterHome 官方 安卓客户端

对于我这小白来说太有用了

libimobiledevice 这个东西可以在 windows 上面安装么?

#15 楼 @coffeephantom 应该不行,不过我也没试过。。。

谢谢总结~

#18 楼 @y693055797 我擦。。我也遇到。。有没有解决办法

#19 楼 @466895041
sudo chmod -R 777 /var/db/lockdown/

大浪 WebDriverAgent 踩坑记 中提及了此贴 12月21日 13:57

报: Could not connect to lockdownd. Exiting.
sudo chmod -R 777 /var/db/lockdown/ 无法解决

Stepthen 回复

报错,提示 Could not connect to lockdownd, error code -19
运行 sudo 后仍然报错,error code -5
求解决方法

实话,这个就是我想要的,符合我的需求。

绝对支撑了 2 个平台的自动化搭建~

很赞的基础~(≧▽≦)/~

很赞😝 一直不会用命令操作 iOS,这下会了

#2 楼 @chungeguo 刚试了下,确实可以获取,便于在只有一台设备的时候自动选择设备。感谢!

此文甚好,容我细品

ideviceinstaller 这个大家用的比较少,应该用起来

苦逼如我,从来没有用过 mac,说要我装个黑苹果。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册