mirror of
https://github.com/viarotel-org/escrcpy.git
synced 2025-01-31 11:53:50 +01:00
update
This commit is contained in:
parent
f651733c11
commit
2371b26d6a
10
README.md
10
README.md
@ -38,6 +38,7 @@
|
|||||||
### WIFI 连接
|
### WIFI 连接
|
||||||
|
|
||||||
> 注意:需同时开启无线调试功能,并在无线调试页面中获取你的当前设备的无线地址(通常为你连接WIFI时分配的IP地址)及端口号(默认为 5555)
|
> 注意:需同时开启无线调试功能,并在无线调试页面中获取你的当前设备的无线地址(通常为你连接WIFI时分配的IP地址)及端口号(默认为 5555)
|
||||||
|
> 注意: 第一次无线连接可能需要插入 USB 以保证与电脑建立连接即授权成功后方可使用
|
||||||
|
|
||||||
1. 同 USB 连接中的 1-2 步骤
|
1. 同 USB 连接中的 1-2 步骤
|
||||||
2. 将获取到的设备 IP 地址及端口号填写到 Escrcpy 中,然后点击连接设备
|
2. 将获取到的设备 IP 地址及端口号填写到 Escrcpy 中,然后点击连接设备
|
||||||
@ -80,12 +81,11 @@
|
|||||||
> 优先级从高到低
|
> 优先级从高到低
|
||||||
|
|
||||||
1. 用户界面进行优化,制作合适的 Logo ✅
|
1. 用户界面进行优化,制作合适的 Logo ✅
|
||||||
2. 添加更多的高级功能 如: 屏幕录像 🚧
|
2. 添加外部控制栏 🚧
|
||||||
3. 添加 macOS 及 linux 操作系统的支持 🚧
|
3. 添加 macOS 及 linux 操作系统的支持 🚧
|
||||||
4. 内置的软件更新功能 🚧
|
4. 内置的软件更新功能 🚧
|
||||||
5. 支持语言国际化功能 🚧
|
5. 支持语言国际化功能 🚧
|
||||||
6. 添加侧边控制栏 🚧
|
6. 添加对游戏的增强功能 如游戏键位映射 🚧
|
||||||
7. 添加对游戏的增强功能 如游戏键位映射 🚧
|
|
||||||
|
|
||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
@ -110,6 +110,10 @@
|
|||||||
1. 在高级设置中开启 设备控制 => 虚拟控制栏 (如果该配置不起作用则需要在设备上手动开启)
|
1. 在高级设置中开启 设备控制 => 虚拟控制栏 (如果该配置不起作用则需要在设备上手动开启)
|
||||||
2. 通过快捷键,请参阅 [scrcpy/doc/shortcuts](https://github.com/Genymobile/scrcpy/blob/master/doc/shortcuts.md)
|
2. 通过快捷键,请参阅 [scrcpy/doc/shortcuts](https://github.com/Genymobile/scrcpy/blob/master/doc/shortcuts.md)
|
||||||
|
|
||||||
|
### 无线连接提示: 目标计算机积极拒绝访问
|
||||||
|
|
||||||
|
第一次无线连接可能需要插入 USB 以保证与电脑建立连接即授权成功后方可使用
|
||||||
|
|
||||||
## 获得帮助
|
## 获得帮助
|
||||||
|
|
||||||
> 因为是开源项目 全靠爱发电 所以支持有限 更新节奏不固定
|
> 因为是开源项目 全靠爱发电 所以支持有限 更新节奏不固定
|
||||||
|
@ -33,9 +33,9 @@
|
|||||||
"@vitejs/plugin-vue": "^4.3.1",
|
"@vitejs/plugin-vue": "^4.3.1",
|
||||||
"@vue/eslint-config-prettier": "^8.0.0",
|
"@vue/eslint-config-prettier": "^8.0.0",
|
||||||
"electron": "^25.6.0",
|
"electron": "^25.6.0",
|
||||||
"electron-builder": "^24.6.3",
|
"electron-builder": "^24.6.4",
|
||||||
"electron-vite": "^1.0.27",
|
"electron-vite": "^1.0.28",
|
||||||
"eslint": "^8.49.0",
|
"eslint": "8.49.0",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
"less": "^4.2.0",
|
"less": "^4.2.0",
|
||||||
"prettier": "^3.0.2",
|
"prettier": "^3.0.2",
|
||||||
|
21
pnpm-lock.yaml
generated
21
pnpm-lock.yaml
generated
@ -50,13 +50,13 @@ devDependencies:
|
|||||||
specifier: ^25.6.0
|
specifier: ^25.6.0
|
||||||
version: 25.8.1
|
version: 25.8.1
|
||||||
electron-builder:
|
electron-builder:
|
||||||
specifier: ^24.6.3
|
specifier: ^24.6.4
|
||||||
version: 24.6.4
|
version: 24.6.4
|
||||||
electron-vite:
|
electron-vite:
|
||||||
specifier: ^1.0.27
|
specifier: ^1.0.28
|
||||||
version: 1.0.27(vite@4.4.9)
|
version: 1.0.28(vite@4.4.9)
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^8.49.0
|
specifier: 8.49.0
|
||||||
version: 8.49.0
|
version: 8.49.0
|
||||||
eslint-plugin-vue:
|
eslint-plugin-vue:
|
||||||
specifier: ^9.17.0
|
specifier: ^9.17.0
|
||||||
@ -976,7 +976,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/http-cache-semantics': 4.0.1
|
'@types/http-cache-semantics': 4.0.1
|
||||||
'@types/keyv': 3.1.4
|
'@types/keyv': 3.1.4
|
||||||
'@types/node': 18.17.15
|
'@types/node': 20.6.0
|
||||||
'@types/responselike': 1.0.0
|
'@types/responselike': 1.0.0
|
||||||
|
|
||||||
/@types/debug@4.1.8:
|
/@types/debug@4.1.8:
|
||||||
@ -1012,7 +1012,7 @@ packages:
|
|||||||
/@types/keyv@3.1.4:
|
/@types/keyv@3.1.4:
|
||||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 18.17.15
|
'@types/node': 20.6.0
|
||||||
|
|
||||||
/@types/lodash-es@4.17.9:
|
/@types/lodash-es@4.17.9:
|
||||||
resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==}
|
resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==}
|
||||||
@ -1039,7 +1039,6 @@ packages:
|
|||||||
|
|
||||||
/@types/node@20.6.0:
|
/@types/node@20.6.0:
|
||||||
resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
|
resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@types/normalize-package-data@2.4.1:
|
/@types/normalize-package-data@2.4.1:
|
||||||
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
|
||||||
@ -1057,7 +1056,7 @@ packages:
|
|||||||
/@types/responselike@1.0.0:
|
/@types/responselike@1.0.0:
|
||||||
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 18.17.15
|
'@types/node': 20.6.0
|
||||||
|
|
||||||
/@types/semver@7.5.2:
|
/@types/semver@7.5.2:
|
||||||
resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==}
|
resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==}
|
||||||
@ -1081,7 +1080,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 18.17.15
|
'@types/node': 20.6.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2):
|
/@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2):
|
||||||
@ -2558,8 +2557,8 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/electron-vite@1.0.27(vite@4.4.9):
|
/electron-vite@1.0.28(vite@4.4.9):
|
||||||
resolution: {integrity: sha512-T8UVt9HtMFMMqU78dhv8TsRHYxMkuMTIZBIFYHzfeEoJ1Go3tVemgY/kO6sTTv94jIhkhcZIkvwmq4liABFjmA==}
|
resolution: {integrity: sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
import { Adb } from '@devicefarmer/adbkit'
|
import { Adb } from '@devicefarmer/adbkit'
|
||||||
import adbPath from '@resources/core/adb.exe?asset&asarUnpack'
|
import adbPath from '@resources/core/adb.exe?asset&asarUnpack'
|
||||||
|
|
||||||
|
const util = require('node:util')
|
||||||
|
const exec = util.promisify(require('node:child_process').exec)
|
||||||
|
|
||||||
let client = null
|
let client = null
|
||||||
|
|
||||||
window.addEventListener('beforeunload', () => {
|
window.addEventListener('beforeunload', () => {
|
||||||
@ -11,6 +14,7 @@ window.addEventListener('beforeunload', () => {
|
|||||||
|
|
||||||
const getDevices = async () => await client.listDevicesWithPaths()
|
const getDevices = async () => await client.listDevicesWithPaths()
|
||||||
const shell = async (id, command) => await client.getDevice(id).shell(command)
|
const shell = async (id, command) => await client.getDevice(id).shell(command)
|
||||||
|
const rawShell = async command => exec(`${adbPath} ${command}`)
|
||||||
const kill = async (...params) => await client.kill(...params)
|
const kill = async (...params) => await client.kill(...params)
|
||||||
const connect = async (...params) => await client.connect(...params)
|
const connect = async (...params) => await client.connect(...params)
|
||||||
const disconnect = async (...params) => await client.disconnect(...params)
|
const disconnect = async (...params) => await client.disconnect(...params)
|
||||||
@ -18,19 +22,19 @@ const disconnect = async (...params) => await client.disconnect(...params)
|
|||||||
const watch = async (callback) => {
|
const watch = async (callback) => {
|
||||||
const tracker = await client.trackDevices()
|
const tracker = await client.trackDevices()
|
||||||
tracker.on('add', (device) => {
|
tracker.on('add', (device) => {
|
||||||
callback(device)
|
callback('add', device)
|
||||||
})
|
})
|
||||||
|
|
||||||
tracker.on('remove', (device) => {
|
tracker.on('remove', (device) => {
|
||||||
callback(device)
|
callback('remove', device)
|
||||||
})
|
})
|
||||||
|
|
||||||
tracker.on('end', (ret) => {
|
tracker.on('end', (ret) => {
|
||||||
callback(ret)
|
callback('end', ret)
|
||||||
})
|
})
|
||||||
|
|
||||||
tracker.on('error', (err) => {
|
tracker.on('error', (err) => {
|
||||||
callback(err)
|
callback('error', err)
|
||||||
})
|
})
|
||||||
|
|
||||||
const close = () => tracker.end()
|
const close = () => tracker.end()
|
||||||
@ -45,6 +49,7 @@ export default () => {
|
|||||||
return {
|
return {
|
||||||
getDevices,
|
getDevices,
|
||||||
shell,
|
shell,
|
||||||
|
rawShell,
|
||||||
kill,
|
kill,
|
||||||
connect,
|
connect,
|
||||||
disconnect,
|
disconnect,
|
||||||
|
@ -118,23 +118,48 @@ export default {
|
|||||||
handleReset() {
|
handleReset() {
|
||||||
this.$electron.ipcRenderer.send('restart-app')
|
this.$electron.ipcRenderer.send('restart-app')
|
||||||
},
|
},
|
||||||
async handleConnect() {
|
async handleConnect({ pairCode = '' } = {}) {
|
||||||
if (!this.formData.host) {
|
if (!this.formData.host) {
|
||||||
this.$message.warning('无线调试地址不能为空')
|
this.$message.warning('无线调试地址不能为空')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
this.connectLoading = true
|
this.connectLoading = true
|
||||||
try {
|
try {
|
||||||
await this.$adb.connect(this.formData.host, this.formData.port || 5555)
|
await this.$adb.connect(this.formData.host, this.formData.port || 5555, pairCode)
|
||||||
this.$message.success('连接设备成功')
|
this.$message.success('连接设备成功')
|
||||||
storage.set('adbCache', this.formData)
|
storage.set('adbCache', this.formData)
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (error.message)
|
if (error.message) {
|
||||||
this.$message.warning(error.message)
|
this.$message.warning(error.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (error.message.includes('10060')) {
|
||||||
|
this.handlePair()
|
||||||
|
}
|
||||||
|
}
|
||||||
this.connectLoading = false
|
this.connectLoading = false
|
||||||
},
|
},
|
||||||
|
async handlePair() {
|
||||||
|
try {
|
||||||
|
const { value } = await this.$prompt('', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
inputType: 'number',
|
||||||
|
inputPlaceholder: '请输入配对码',
|
||||||
|
closeOnClickModal: false,
|
||||||
|
})
|
||||||
|
|
||||||
|
await this.$adb.rawShell(
|
||||||
|
`pair ${this.formData.host}:${this.formData.port || 5555} ${this.value}`,
|
||||||
|
)
|
||||||
|
|
||||||
|
this.handleConnect({ pairCode: value })
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.warn(error.message)
|
||||||
|
}
|
||||||
|
},
|
||||||
async handleStop(row) {
|
async handleStop(row) {
|
||||||
row.$stopLoading = true
|
row.$stopLoading = true
|
||||||
const [host, port] = row.id.split(':')
|
const [host, port] = row.id.split(':')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user