ADB 명령을 위한 GUI 작업 도구를 직접 만들어 보십시오.
3009 단어 adbAndroidC#OculusQuest
거치다
"OculusQuest에서 내 어플리케이션이 Unity부터 설치까지 다 된다고 하던데, 마운트 해제가 안 된다고...정말...? 명령 프롬프트에서 ADB 명령 마운트 해제...? 에? 정말? 에? 무슨 소리야...?"
그래서 했어요.
https://github.com/divide-by-zero/ADBB/
※ 맞습니다. 윈도우즈 전용
할 수 있는 일
핑계
혼자 쓰는 거니까 UI도 그런 느낌이고 소스 코드도 알아차리지만 한동안 사용하기 편해서 공개하기로 했어요.
그리고 대략적인 안드로이드 단말기도 사용할 수 있을 것 같지만 기본적으로 OculusQuest가 사용합니다.
내부적으로adb shell
를 통해 정보를 얻었지만 그곳에서 사용grep
과sed
, ADB 셸에서 사용할 수 있는 명령은 모든 안드로이드 단말기에서 공통적이라고 생각하지 않기 때문에 회색 구역이 될 수밖에 없는 것 같다.
시작 방법
git에서clone 및 구축 또는releasehttps://github.com/divide-by-zero/ADBB/releases/에서 zip 다운로드 가능
또는 압축 해제 exe(자체 압축 해제 형식), 시작 폴더의 ADBB.EXE
.
처음 시작할 때 adb.exe
경로 설정이 열립니다. (설치될 수 있음) adb.exe
을 지정하십시오.
일반적으로 AndroidSDK가 설치된 폴더\android-sdk\platform-tools에 있습니다.
구조
위에 적힌'할 수 있는 일'모두adb
(Android Debug Bridge)는 할 수 있다.
설정된adb.이것은 단지 exe 경로를 사용하여 명령을 대체하는 것에 불과하다.
그래서adb.exe가 할 수 있는 일은 모두 할 수 있고, 반대로adb.exe가 할 수 없는 일은 할 수 없다.
소스 구성
매우 난잡하다. Value Object로서 연결을 담당하는 안드로이드 단말기Device
류, 설치된 응용 프로그램PackageData
류.
UI 섹션은 MainForm
, Adb 명령 처리 클래스는 AdbCommand
클래스이지만 간단합니다.
조금 노력했어요.
일반적으로 클래스에서 ADB 명령을 실행하면 UI가 굳어집니다.블록 처리니까.
따라서 내부적으로 Process
및 Task.Run
비동기화 (스레드 풀 실행) 를 사용합니다.
그냥 그랬으면 좋겠어요. TaskCompletionSource
및 adb install [パッケージ名]
명령이 장치가 연결되지 않은 상태에서 실행되면c:\>adb install test.apk
error: no devices/emulators found
adb: error: failed to get feature set: no devices/emulators found
- waiting for device -
이렇게 adb uninstall [パッケージ名]
나와서 장치 연결을 기다리세요.
명령줄에서 이 상태에 있으면 - waiting for device -
를 누르는 등 멈추지만 프로세스 클래스를 사용할 때 외부에서 호출해야 한다Ctrl+C
.
이번처럼 외부에서 임무화된 처리를 멈추다 = Kill()
등장.
따라서 CancellationToken
버전을 교부할 수 있는 비동기 프로세스 실행을 실현했다(대략)
이외에adb의 명령(및adb셸의 명령)에서 표준 출력 정보를 얻기 위해 매우 소박하게 노력합니다.눈물나게 하다.
더 하고 싶은 일
git에서clone 및 구축 또는releasehttps://github.com/divide-by-zero/ADBB/releases/에서 zip 다운로드 가능
또는 압축 해제 exe(자체 압축 해제 형식), 시작 폴더의
ADBB.EXE
.처음 시작할 때
adb.exe
경로 설정이 열립니다. (설치될 수 있음) adb.exe
을 지정하십시오.일반적으로 AndroidSDK가 설치된 폴더\android-sdk\platform-tools에 있습니다.
구조
위에 적힌'할 수 있는 일'모두adb
(Android Debug Bridge)는 할 수 있다.
설정된adb.이것은 단지 exe 경로를 사용하여 명령을 대체하는 것에 불과하다.
그래서adb.exe가 할 수 있는 일은 모두 할 수 있고, 반대로adb.exe가 할 수 없는 일은 할 수 없다.
소스 구성
매우 난잡하다. Value Object로서 연결을 담당하는 안드로이드 단말기Device
류, 설치된 응용 프로그램PackageData
류.
UI 섹션은 MainForm
, Adb 명령 처리 클래스는 AdbCommand
클래스이지만 간단합니다.
조금 노력했어요.
일반적으로 클래스에서 ADB 명령을 실행하면 UI가 굳어집니다.블록 처리니까.
따라서 내부적으로 Process
및 Task.Run
비동기화 (스레드 풀 실행) 를 사용합니다.
그냥 그랬으면 좋겠어요. TaskCompletionSource
및 adb install [パッケージ名]
명령이 장치가 연결되지 않은 상태에서 실행되면c:\>adb install test.apk
error: no devices/emulators found
adb: error: failed to get feature set: no devices/emulators found
- waiting for device -
이렇게 adb uninstall [パッケージ名]
나와서 장치 연결을 기다리세요.
명령줄에서 이 상태에 있으면 - waiting for device -
를 누르는 등 멈추지만 프로세스 클래스를 사용할 때 외부에서 호출해야 한다Ctrl+C
.
이번처럼 외부에서 임무화된 처리를 멈추다 = Kill()
등장.
따라서 CancellationToken
버전을 교부할 수 있는 비동기 프로세스 실행을 실현했다(대략)
이외에adb의 명령(및adb셸의 명령)에서 표준 출력 정보를 얻기 위해 매우 소박하게 노력합니다.눈물나게 하다.
더 하고 싶은 일
매우 난잡하다. Value Object로서 연결을 담당하는 안드로이드 단말기
Device
류, 설치된 응용 프로그램PackageData
류.UI 섹션은
MainForm
, Adb 명령 처리 클래스는 AdbCommand
클래스이지만 간단합니다.조금 노력했어요.
일반적으로 클래스에서 ADB 명령을 실행하면 UI가 굳어집니다.블록 처리니까.
따라서 내부적으로 Process
및 Task.Run
비동기화 (스레드 풀 실행) 를 사용합니다.
그냥 그랬으면 좋겠어요. TaskCompletionSource
및 adb install [パッケージ名]
명령이 장치가 연결되지 않은 상태에서 실행되면c:\>adb install test.apk
error: no devices/emulators found
adb: error: failed to get feature set: no devices/emulators found
- waiting for device -
이렇게 adb uninstall [パッケージ名]
나와서 장치 연결을 기다리세요.
명령줄에서 이 상태에 있으면 - waiting for device -
를 누르는 등 멈추지만 프로세스 클래스를 사용할 때 외부에서 호출해야 한다Ctrl+C
.
이번처럼 외부에서 임무화된 처리를 멈추다 = Kill()
등장.
따라서 CancellationToken
버전을 교부할 수 있는 비동기 프로세스 실행을 실현했다(대략)
이외에adb의 명령(및adb셸의 명령)에서 표준 출력 정보를 얻기 위해 매우 소박하게 노력합니다.눈물나게 하다.
더 하고 싶은 일
c:\>adb install test.apk
error: no devices/emulators found
adb: error: failed to get feature set: no devices/emulators found
- waiting for device -
그럼 안녕히 계세요.
Reference
이 문제에 관하여(ADB 명령을 위한 GUI 작업 도구를 직접 만들어 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/divideby_zero/items/3a494ae6bed82c8935ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)