Hướng dẫn adb python github - adb trăn github

python-adb

Hướng dẫn adb python github - adb trăn github

Lưu ý: Đây không phải là một dự án chính thức của Google. Nó được duy trì bởi các kỹ sư cũ của Google. Để có tùy chọn được duy trì tốt hơn, hãy xem ADB_SHELL.

Kho lưu trữ này chứa việc triển khai Python thuần túy của các giao thức ADB và Fastboot, sử dụng LibusB1 cho truyền thông USB.

Đây là một sự thay thế hoàn chỉnh và kiến ​​trúc của ADB và mã Fastboot của Dự án Android

Mã này chủ yếu được nhắm mục tiêu cho người dùng cần giao tiếp với các thiết bị Android một cách tự động, chẳng hạn như trong thử nghiệm tự động. Nó không có trình nền giữa máy khách và thiết bị, và do đó không hỗ trợ nhiều lệnh đồng thời cho cùng một thiết bị. Nó không hỗ trợ bất kỳ số lượng thiết bị nào và không bao giờ giao tiếp với một thiết bị mà nó không có ý định, không giống như ADB của Dự án Android.

Sử dụng làm công cụ độc lập

Cài đặt bằng PIP:

Sau khi được cài đặt, hai nhị phân mới nên có sẵn: pyadbpyfastboot.

pyadb devices
pyadb shell ls /sdcard

Chạy ./make_tools.py Tạo hai tệp: adb.zipfastboot.zip. Chúng có thể được chạy tương tự như bản địa adb

python adb.zip devices
python adb.zip shell ls /sdcard
0 thông qua trình thông dịch Python:

python adb.zip devices
python adb.zip shell ls /sdcard

Sử dụng như một thư viện Python

Một bài thuyết trình đã được thực hiện tại Pycon 2016, và đây là một số mã demo:

import os.path as op

from adb import adb_commands
from adb import sign_cryptography


# KitKat+ devices require authentication
signer = sign_cryptography.CryptographySigner(
    op.expanduser('~/.android/adbkey'))
# Connect to the device
device = adb_commands.AdbCommands()
device.ConnectDevice(
    rsa_keys=[signer])
# Now we can use Shell, Pull, Push, etc!
for i in xrange(10):
  print device.Shell('echo %d' % i)

Ưu điểm

  • Mã đơn giản hơn do sử dụng libusb1 và python.
  • API có thể được sử dụng bởi mã Python khác một cách dễ dàng.
  • Lỗi được nhân giống với TraceBacks, giúp gỡ lỗi các vấn đề kết nối.
  • Không có Daemon vượt xa lệnh.
  • Có thể được đóng gói dưới dạng zips độc lập có thể chạy độc lập với kiến ​​trúc CPU (ví dụ: x86 vs ARM).

Nhược điểm

  • Về mặt kỹ thuật chậm hơn do Python, được giảm nhẹ bởi không có daemon.
  • Chỉ có một lệnh cho mỗi thiết bị tại một thời điểm.
  • Nhiều phụ thuộc hơn ADB của Android.

Phụ thuộc

  • libusb1 (1.0.16+)
  • Python-Libusb1 (1.2.0+)
  • adb.zip: Một trong số:
    • py-cryptography
    • Python-RSA (3.2+)
  • fastboot.zip (tùy chọn):
    • Thanh tiến trình Python (2.3+)

Lịch sử

1.0.0

  • Phiên bản đầu tiên

1.1.0

  • Đã thêm tcphandle (Jameyhicks)
  • Thời gian khác nhau và các thay đổi khác (Alusco)

1.2.0

  • Cập nhật lên Libusb1 1.6+ (đầu ra bytearray)
  • Thêm hỗ trợ cho Python 3.6
  • Tạo adb.zip và fastboot.zip làm công cụ thực thi.
  • Thêm tích hợp Travis CI
  • Hỗ trợ nhiều thư viện tiền điện tử (M2Crypto + Python-RSA)
  • Đẩy thư mục

1.3.0

Thay đổi ngược không tương thích

python adb.zip devices
python adb.zip shell ls /sdcard
3 hiện là một lớp bình thường chứ không phải là một tập hợp các staticmethod. Sử dụng mã ví dụ sau để bắt đầu:

device = adb_commands.AdbCommands()
device.ConnectDevice(rsa_keys=[signer])

Các thay đổi/sửa chữa khác

Nhiều thay đổi kể từ 1.2.0!

  • Điểm nhập mới được tiếp xúc bởi PIP: Pyadb và Pyfastboot
  • Rất nhiều bản sửa lỗi tương thích Python 2/3
  • Khả năng tương thích Windows
  • Tiến trình chuyển nhượng có sẵn (
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    4,
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    5,
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    6)
  • Xử lý một số thiết bị hành vi sai (lỗi clse kép)
  • Các tùy chọn mới cho
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    4 và
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    6 (
    python adb.zip devices
    python adb.zip shell ls /sdcard
    
    9 và
    import os.path as op
    
    from adb import adb_commands
    from adb import sign_cryptography
    
    
    # KitKat+ devices require authentication
    signer = sign_cryptography.CryptographySigner(
        op.expanduser('~/.android/adbkey'))
    # Connect to the device
    device = adb_commands.AdbCommands()
    device.ConnectDevice(
        rsa_keys=[signer])
    # Now we can use Shell, Pull, Push, etc!
    for i in xrange(10):
      print device.Shell('echo %d' % i)
    0)