一、安装 mysql
https://dev.mysql.com/downloads/mysql/
设置 root 密码
为便于使用,创建别名:
echo "alias mysql=/usr/local/mysql/bin/mysql" >> ~/.zshrc
echo "alias mysqladmin=/usr/local/mysql/bin/mysqladmin" >> ~/.zshrc
命令行设置密码:
mysqladmin -u root password xxxxxx
修改密码:
mysqladmin -u root -p password xxxxxx(新密码)
创建数据库
mysql -u root -p
create database sonic character set = 'utf8mb3' collate = 'utf8mb3_general_ci' encryption='N';
允许mysql的root用户远程连接
use mysql;
select user,host from user;
update user set host = '%' where user = 'root';
flush privileges;
二、安装 docker
官方 docker desktop 极其难用,这里选用 orbstack 作为 docker 承载虚拟机。
brew install orbstack
验证 orbstack:orb start
打开 OrbStack app,设置中勾选 Start at login、Keeprunning when menu bar app is quit
尝试过 Docker Desktop、colima、orbstack,都未能在 Mac 上实现开机不登录情况下自动启动,只好暂时忍受,机器重启后,需要人工登录。登录后 orbstack 是可以自动启动的,但不能确保所有 docker 容器都能正常启动,需要检查。
三、安装 sonic-server
下载 https://github.com/SonicCloudOrg/sonic-server/releases/download/v2.6.4/sonic-server-v2.6.4.zip
解压后移至 ~/sonic-server-v2
设置 .env 中参数:
SONIC_SERVER_HOST=192.168.x.x
MYSQL_HOST=192.168.x.x
MYSQL_PASSWORD=xxxxxx
启动 sonic-server:
cd ~/sonic-server-v2
docker-compose up -d
浏览器打开 sonic server
http://192.168.x.x:3000
注册账号 sonic :sonic
设备中心 - agent 中心 - 创建 agent:agent1,复制 agent key
三、安装 agent
此例中只安装一台 agent,与 sonic-server 共用同一台机。
https://ghproxy.com/https://github.com/SonicCloudOrg/sonic-agent/releases/download/v2.6.4/sonic-agent-v2.6.4-macosx_x86_64.zip
https://ghproxy.com/https://github.com/SonicCloudOrg/sonic-agent/releases/download/v2.6.4/sonic-agent-v2.6.4-macosx_arm64.zip
解压到 ~/sonic-agent-v2
sudo chmod -R 777 xxxxx
修改 config/application-sonic-agent.yml 中 agent 下的 host、key,server 下的 host
wda-bundle-id: com.my.WebDriverAgentRunner
sudo spctl --master-disable
cd sonic-agent-v2
java -Dfile.encoding=utf-8 -jar sonic-agent-xxxx.jar
在设置 - 隐私与安全性,允许 sonic-android-supply、sonic-ios-bridge、sonic-go-mitmproxy
【sonic-agent 作为服务开机启动】
创建 /Library/LaunchDaemons/com.my.sonic-agent.plist,纯文本,编码utf8
内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.my.sonic-agent</string>
<key>KeepAlive</key>
<true/>
<key>ProcessType</key>
<string>Interactive</string>
<key>RunAtLoad</key>
<true/>
<key>Program</key>
<string>/usr/local/opt/openjdk/bin/java</string>
<key>ProgramArguments</key>
<array>
<string>-Dfile.encoding=utf-8</string>
<string>-jar</string>
<string>/Users/admin/sonic-agent-v2/sonic-agent-macosx-x86_64.jar</string>
</array>
<key>UserName</key>
<string>admin</string>
<key>GroupName</key>
<string>staff</string>
<key>WorkingDirectory</key>
<string>/Users/admin/sonic-agent-v2</string>
<key>EnvironmentVariables</key>
<dict>
<key>JAVA_HOME</key>
<string>/usr/local/opt/openjdk</string>
<key>ANDROID_HOME</key>
<string>/Users/admin/Library/Android/sdk</string>
<key>ANDROID_PATH</key>
<string>/Users/admin/Library/Android/sdk/platform-tools</string>
<key>PATH</key>
<string>/usr/local/opt/openjdk/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin</string>
</dict>
</dict>
</plist>
查看并确保该文本的 owner 为 root:wheel,必要时改变所有者
sudo chown root:wheel /Library/LaunchDaemons/com.my.sonic-agent.plist
启用服务
sudo launchctl enable system/com.my.sonic-agent
sudo launchctl bootstrap system /Library/LaunchDaemons/com.my.sonic-agent.plist
四、连接手机
NOTE: 使用 tcp/ip 连接安卓手机有一个缺陷:手机重启后,无法通过 ip:port 连接。推荐通过usb 连接。
安卓手机:
开启开发者选项
启用 usb 调试
不同手机注意事项:
https://sonic-cloud.cn/deploy/android-deploy.html
iOS:
编译制作 WebDriverAgentRunner,其包名更改为 com.my.WebDriverAgentRunner
手机通过 usb 连接到 agent 机上
信任电脑
iOS16 及以上:设置-隐私与安全性,打开“开发者模式”
连接后需要等待一段时间,agent 机从手机复制完共享缓存符号数据后,才可使用,同步完后若还不可用,拔下 usb 线重新连接一次。
通过 sonic 网页向手机安装 WebDriverAgentRunner.ipa
https://sonic-cloud.cn/deploy/ios-deploy.html
sonic 使用指南:
https://sonic-cloud.cn/doc/doc-use.html