제4장 3절, ADB 프로토콜 및 서비스: ADB 프로토콜 개요 SYNC.TXT 번역 참조(오리지널)

3313 단어
천지회 주해분타주: 원래 이 시리즈는 한 권의 책을 준비했는데, 상세한 내용은 이전 블로그에 "파트너를 찾아서'몽키 러너를 깊이 이해하라'는 책을 썼습니다. 하지만 여러 가지 이유로 뜻대로 되지 않았습니다. 그래서 여기에 초고를 공유하기 때문에 오류가 불가피합니다. 필요한 것이 있으면 참고하시고, 전달하면 문장 끝부분의 출처 등 정보를 남겨 주십시오.
이 문서의 목적은 클라이언트가 ADB 서버에adbd 수호 프로세스에 파일 관련 요청을 문서화하는 것입니다.OVERVIEW를 보십시오.TXT 문서(ADB 서버와adbd 데몬) 관련 정보를 보고 SERVICES를 보십시오.TXT는 더 많은 사용 가능한 요청을 학습합니다.

동기화 서비스:


Services를 사용합니다.TXT가 기술한 관련 프로토콜은 동기화 서비스 ("sync:") 를 요청하여 연결을 동기화 모드로 설정합니다.이 모드도 2진 모드라고 하는데 정상adb 프로토콜과는 다르다.설정된 연결은 이 모드에서 현저하게 종료될 때까지 유지됩니다. (아래 설명 참조)
"sync:"명령을 실행하여 동기화 모드를 시작한 후, 서버 측은 반드시 정상 모드 (OVERVIEW.TXT 참조) 처럼'OKAY'또는'FAIL'로 돌아가야 합니다.
동기화 모드에서 서버와 클라이언트는 8바이트 데이터 패키지를 자주 사용하여 상호작용을 합니다.이것은 이 문서에서'동기화 요청'과'동기화 응답'이라고 불린다. 처음에 4바이트는 지정한 동기화 요청의 id이다. 이 4바이트는 4개의 utf-8 문자로 나타난다. 뒤에 4바이트는 작은 바이트 순서의 정수로 비교적 광범위하게 사용된다."". 사실상 동기화 모드의 모든 바이트 정수는 작은 바이트 순서입니다. 동기화 모드는 동기화 요청이 완료될 때마다 은밀하게 자동으로 종료되고 정상적인adb 통신 모드로 들어갑니다. 정상적인 모드에 대한 자세한 내용은 SERVICES.TXT를 보십시오.
다음과 같은 범위 내의 모든 동기화 요청을 수락합니다.
  • LIST - 폴더 아래에 있는 모든 파일을 나열합니다
  • SEND - 대상 장치로 파일을 전송합니다
  • RECV - 대상 장치에서 파일을 가져옵니다

  • 아직 문서화되지 않은 동기화 요청은 다음과 같습니다.
  • STAT - 파일의 다양한 상태 속성을 가져옵니다
  • ULINK - 파일 연결을 취소(삭제)합니다.(아직 지원되지 않음)

  • 위에서 언급한 모든 동기화 요청 뒤에는'길이'가 지정한 크기의 바이트에 따라utf-8 문자열 형식의 원격 파일 이름을 저장해야 합니다.

    LIST:


    이 동기화 요청은 원격 파일 이름이 지정한 디렉터리에 있는 모든 파일을 보여 줍니다.서버 측은 0 개 이상의 디렉터리 항목을 되돌려주거나'dents'라고 할 수도 있습니다.
    디렉터리 항목은 다음과 같은 형식으로 되돌아갈 것이다
  • 4바이트의 id가 "DENT"로 동기화됩니다
  • 4바이트는 파일 (권한) 모드의 정수를 나타냅니다
  • 4바이트는 파일 크기의 정수를 나타낸다
  • 4바이트는 마지막으로 사건을 수정하는 정수를 대표한다
  • 4바이트는 파일 이름의 길이를 나타내는 정수입니다
  • "길이"크기는utf-8 문자열 형식으로 인코딩된 파일 이름의 바이트 코드를 포함합니다

  • 클라이언트가 "DONE"이라는 동기화 반환을 받으면 지정한 디렉터리에 있는 모든 파일의 요청이 완료됩니다.

    SEND:


    원격 파일 이름은 마지막 쉼표(",")를 통해 두 부분으로 구분되며 앞부분은 실제 경로를 나타내고 뒤의 두 번째 부분은 대상 장치에서 파일에 대한 접근 권한을 나타내는 십진수 형식의 파일 모드 속성입니다.
    일부 파일 형식은 (adbd) 파일을 대상 디렉터리로 복사하기 전이나 전송이 실패한 후에 삭제될 수 있음을 주의하십시오.그러나 일부 파일 형식은 삭제되지 않습니다. 이렇게 하면 허용됩니다.
      adb push disk_image /some_block_device
    

    정상적으로 작동할 수 있습니다. (천지회 주해분타주: 그렇지 않으면adbd가 받아들인 파일을 처리한 후에 삭제하면 이 파일을 대상 블록 장치인 some_block_device로 복사할 수 없습니다.)
    전송 명령을 보낸 후 실제 파일 내용은 블록을 통해 전송될 수 있습니다.각 파일 블록에는 다음과 같은 형식이 있습니다.
    id를 "DATA"로 하는 동기화 요청 명령과 블록 크기와 같은 길이, 그리고 블록 크기의 바이트 내용을 따라갑니다.파일의 내용은 전체 파일 전송이 끝날 때까지 이런 형식으로 반복적으로 전송됩니다.각 블록의 크기는 64k보다 클 수 없습니다.
    파일 전송이 완료되면 "DONE"동기화 요청이 대상 기기 (adbd) 로 전송되며, 이 경우 요청된 "길이"는 파일의 마지막 수정 시간으로 설정됩니다.서버는 마지막으로 이 요청을 받은 후 (각 블록의 전송 요청이 아님을 주의)'OKAY'동기화 응답을 반환합니다. (요청의'길이'는 무시할 수 있습니다)

    RECV:


    이 요청의 역할은 대상 기기에서 파일을 가져와 로컬에 저장하는 것입니다.요청한 원격 파일 이름은 가져올 원격 파일 이름의 경로를 설정합니다.위의 "SEND"동기화 요청과 마찬가지로 파일은 모두 파일 블록으로 전송됩니다.동기화 반환 형식의 id는 "DATA"이고, "길이"는 블록 크기이며, 그 다음은 지정한 블록 크기의 바이트 수 (파일 내용) 입니다.같은 블록 크기는 64k를 초과할 수 없습니다.
    파일 전송이 완료되면 클라이언트가 "DONE"동기화 요청을 받게 됩니다. 이 요청의 길이는 무시할 수 있습니다.
    공식 영문판:https://android.googlesource.com/platform/system/core/+/master/adb/SYNC.TXT
    ---아직 끝나지 않았어---
    저자: 천지회 주해분타 위챗 공중호: TechGoGoGo 위챗:http://weibo.com/techgogogo CSDN:http://blog.csdn.net/zhubaitian

    좋은 웹페이지 즐겨찾기