Homebrew是Mac下最常用的包管理工具,并且是開源的(官網(wǎng)https://brew.sh)。如果Mac上沒有,先安裝HomeBrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
1. 安裝libimobiledevice
brew install --HEAD libimobiledevice -g
libimobiledevice中并不包含ipa的安裝命令,所以還需要安裝ideviceinstaller
brew install --HEAD ideviceinstaller -g
2. 測試過有效的其他命令
一些要用到的信息:
// 手機的UDID
bf76c991995e61c5c783f3441bff4a18605bc7ba
// 桌面測試ipa的文件路徑
/Users/ypf/Desktop/SmartTest.ipa
// 桌面測試ipa的BundleID
com.CSS.app.SmartTest
2.1 列出當(dāng)前所有設(shè)備,包括連接到mac的真機、模擬器、這臺mac電腦本身
instruments -s devices
2.2 列出當(dāng)前連接到mac的設(shè)備的UDID,包括通過usb和wifi連接的
idevice_id -l
2.3 安裝mac上的ipa到手機
ideviceinstaller -u [udid] -i [xxx.ipa]
// 舉例子
ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba --install /Users/ypf/Desktop/SmartTest.ipa
2.4 卸載手機應(yīng)用
ideviceinstaller -u [udid] -U [bundleId]
// 舉例子
ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba --uninstall com.chinasoft.app.SmartTest
2.5 屏幕截圖
這個截圖的路徑暫時不知道怎么設(shè)置,默認(rèn)會存放在/users/ypf下
idevicescreenshot
2.6 獲取實時系統(tǒng)日志
idevicesyslog
2.7 獲取指定設(shè)備的信息
ideviceinfo -u [udid]
// 舉例子
ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba
2.8 獲取指定設(shè)備的名稱
ideviceinfo -u [udid] -k DeviceName
// 舉例子1
ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k DeviceName
或
idevicename -u [udid]
舉例子2
idevicename --udid bf76c991995e61c5c783f3441bff4a18605bc7ba
2.9 獲取指定設(shè)備的系統(tǒng)版本
ideviceinfo -u [udid] -k ProductVersion
// 舉例子
ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductVersion
2.10 獲取指定設(shè)備的型號
ideviceinfo -u [udid] -k ProductType
// 舉例子
ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductType
2.11 獲取指定設(shè)備的系統(tǒng)名稱
ideviceinfo -u [udid] -k ProductName
// 舉例子
ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductName
2.12 獲取設(shè)備時間
idevicedate
2.13 獲取設(shè)備名稱
idevicename
2.14 查看和操作設(shè)備的描述文件
ideviceprovision list
2.15 查看指定設(shè)備安裝的所有應(yīng)用,包括系統(tǒng)和第三方
ideviceinstaller -u [udid] -l -o list_all
// 舉例子
ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l -o list_all
2.16 查看指定設(shè)備安裝的第三方應(yīng)用
ideviceinstaller -u [udid] -l
// 舉例子1
ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l
或
ideviceinstaller -u [udid] -l -o list_user
// 舉例子2
ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l -o list_user
2.17 查看指定設(shè)備安裝的系統(tǒng)應(yīng)用
ideviceinstaller -u [udid] -l -o list_system
// 舉例子
ideviceinstaller --udid 64af3bfaf93e6a0e97d75aeac8fbb8610732c150 -l -o list_system
2.18 設(shè)置代理 / 端口轉(zhuǎn)發(fā)
(舉個端口轉(zhuǎn)發(fā)的例子)
先將iPhone用數(shù)據(jù)線連接到Mac,在終端執(zhí)行如下命令:
// 第1個是Mac端口,第2個是iPhone端口
iproxy 7999 8100
此時會將iPhone上的8100端口的數(shù)據(jù)轉(zhuǎn)發(fā)到Mac的7999端口,這個在做自動化測試時會用到(因為iOS自動化測試現(xiàn)有的主流框架大都是基于WebDriver協(xié)議的實現(xiàn)的,F(xiàn)acebook自家封裝了一個開源框架WebDriverAgent,這里其實是有一個不小的坑,需要好好說道說道,詳見我的另一篇文章xxx)
3. 待測試的命令
3.1 掛載DeveloperDiskImage
用于調(diào)試……
ideviceimagemounter
3.2 調(diào)試程序(需要預(yù)先掛載DeveloperImage)
idevicedebug
4. 用xcodebuild從源碼構(gòu)建應(yīng)用安裝包
$ 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 參數(shù)值是在 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 包直接就放在當(dāng)前目錄
5. 解決ideviceinstaller報錯:Could not connect to lockdownd. Exiting.
brew uninstall ideviceinstaller -g
brew uninstall libimobiledevice -g
brew install --HEAD libimobiledevice -g
brew install --HEAD ideviceinstaller -g
sudo chmod -R 777 /var/db/lockdown
待測試的解決方法:
brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install ideviceinstaller
brew link --overwrite ideviceinstaller
sudo chmod -R 777 /var/db/lockdown