最近做 iOS 相关的事情比较多,发现其实 iOS 下还是有很多和 android 可以对应的操作,所以在此记录一下。
备注: iOS 用到的ideviceinstaller
,idevicesyslog
等命令安装命令为:
$ brew uninstall ideviceinstaller
$ brew uninstall libimobiledevice
$ brew install --HEAD libimobiledevice
$ brew link --overwrite libimobiledevice
$ brew install ideviceinstaller
$ brew link --overwrite ideviceinstaller
应用相关
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
对于脚本中要使用默认设备的场景很方便。
ideviceinfo 获取ios手机信息
ideviceinfo -x 获取ios手机信息,并以xml形式显示
ideviceinfo -k ProductType 获取手机型号
ideviceinfo -k ProductVersion 获取系统版本
ideviceinfo -k DeviceName 获取手机名称