2014-11-06 29 views
11

Tôi đang cố gắng sử dụng ADB trên thiết bị Android, vì vậy không có bất kỳ máy chủ nào. Điều này đã làm việc hoàn hảo một vài ngày trước, nhưng nó đột nhiên ngừng hoạt động. Theo như tôi biết không có gì thay đổi kể từ đó (ví dụ: không có ứng dụng (un) cài đặt). Tôi có thể sử dụng adb backup -f /sdcard/backup.ab <package-name> trong một trình mô phỏng thiết bị đầu cuối và nó sẽ bắt đầu sao lưu gói đó. Khi tôi thử điều đó ngay bây giờ, nó trả về adb: unable to connect for backup. Điều tra bằng cách sử dụng adb devices trả về một danh sách trống. Tôi không bao giờ bận tâm để kiểm tra các thiết bị trước đây, tôi chỉ cần đi thẳng đến lệnh adb của tôi, bởi vì tất cả mọi thứ đã làm việc.Sử dụng ADB cục bộ trên thiết bị (loopback) cho thấy không có thiết bị

Đây là trên HTC Desire chạy Android 4.4.2, phiên bản ADB 1.0.31. Sử dụng ADB từ máy tính của tôi với điện thoại này hoạt động hoàn hảo, nhưng đây không phải là điều tôi muốn.

Những gì tôi đã cố gắng

  • Tôi đã cố gắng để thực hiện các hành động tương tự trên các thiết bị khác nhau (Asus Padfone 2 trên 4.4.2, Samsung Galaxy Note GT-N7000 trên 4.4.2, Sony Xperia S trên 4.1.2.) nhưng adb devices trả về một danh sách trống trên tất cả chúng. Tôi bắt đầu tự hỏi tại sao điều này đã làm việc trên HTC Desire của tôi ở nơi đầu tiên.
  • Tìm kiếm Google và Ngăn xếp ngăn xếp, nhưng hầu hết (nếu không phải tất cả) kết quả đều đề cập đến sự cố trình điều khiển hoặc bất kỳ sự cố nào khác liên quan đến máy chủ.
  • adb kill-server + adb start-server khoảng một trăm lần, cũng như stop adbd + start adbd.
  • Tắt và bật 'Gỡ lỗi USB' trong Cài đặt, cũng như thu hồi quyền truy cập vào các máy tính được ủy quyền trước đó. (Tuy nhiên, trong tình hình hoạt động, tôi không bao giờ có bất kỳ lời nhắc xác minh khóa RSA nào.)
  • adb -a devices -> danh sách trống.
  • adb usb ->error: device not found.
  • Cố gắng khởi động lại adb (d) ở chế độ TCP không thành công (mặc dù điều này không cần thiết trong tình huống hoạt động). adb tcpip 5555 trả về error: device not found.
  • getprop không trả lại mục nhập nào có tên service.adb.tcp.portsetprop service.adb.tcp.port 5555 âm thầm không thành công. (Kiểm tra sau đó sử dụng getprop service.adb.tcp.port không trả lại gì cả. Không cần phải root này?)
  • adb connect localhost trả về unable to connect to localhost:5555.
  • Khi daemon bắt đầu, nó bắt đầu trên cổng 5038 (khi sử dụng ADB từ máy tính của tôi, nó bắt đầu vào năm 5037). adb connect localhost:5038 trả lại connected to localhost:5038. Tuy nhiên adb devices vẫn trả về một danh sách trống và adb backup trả lại adb: unable to connect for backup. Hơn nữa, adb shell trả lại error: device not foundadb get-state trả về unknown. Vì vậy, không có thành công ở đây cả.
  • Tìm ip cục bộ của tôi bằng cách sử dụng getprop dhcp.wlan0.ipaddress (trả về 192.168.1.xx) và sau đó adb connect 192.168.1.xx trả về unable to connect to :5555. adb connect 192.168.1.xx:5038 ->unable to connect to :5038. Sử dụng ADBHOST=192.168.1.xx adb start-server không ảnh hưởng đến các kết quả này.
  • Một trong số ít kết quả tìm kiếm thực sự có liên quan một phần là this luồng trên Bộ theo dõi sự cố AOSP. Tuy nhiên, nó mô tả một vấn đề, sau khi sử dụng setprop service.adb.tcp.port 5555, adb devices ít nhất là hiển thị một thiết bị, tuy nhiên ngoại tuyến (cụ thể là localhost:5555 offline).Hơi gần cuối sợi chỉ là một giải pháp đạt được, bao gồm việc thay đổi thư mục $ HOME để thay đổi nơi lưu khóa RSA, ví dụ: HOME=/sdcard. Sau đó, bạn cần phải thêm khóa công khai vào/data/misc/adb/adb_keys bằng cách sử dụng cat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys. Tuy nhiên, tôi đoán điều này cần gốc? Ngoài ra, tất cả điều này là không cần thiết trong tình hình làm việc vì vậy tôi nghi ngờ giải pháp cho vấn đề của tôi là được tìm thấy theo hướng này. This article, bắt nguồn từ chuỗi tại Trình theo dõi vấn đề của AOSP, không nói thêm phần khóa công cộng. Tuy nhiên, cách tiếp cận được đề cập là không thành công.
  • netstat lợi nhuận (trong số những người khác):

    • Proto: tcp
    • Recv-Q: 0
    • Send-Q: 0
    • Local Address: 127.0.0.1:5038
    • Foreign Address: 0.0.0.0:*
    • State: LISTEN
  • ps cho thấy một quá trình /sbin/adbd cũng như một adb quá trình:

    • USER: shell PID: 92 PPID: 1 VSIZE: 3624 RSS: 264 WCHAN: ffffffff PC: 00000000 S NAME: /sbin/adbd
    • USER: u0_a57 PID: 9754 PPID: 1 VSIZE: 3016 RSS: 988 WCHAN: ffffffff PC: 4014f768 S NAME: adb
    • (Commands executed from the terminal are executed as USER: u0_a57.)

Tôi đoán đó là khá nhiều nó.

Tôi đang tìm một giải pháp không cần gốc, vì nó không cần thiết khi tôi làm việc trước đó. Tôi hy vọng tình hình và câu hỏi của tôi là rõ ràng. Vui lòng cho tôi biết nếu câu hỏi của tôi cần cải thiện, vì đây là lần đầu tiên tôi đăng bài trên Stack Overflow. Hy vọng rằng ai đó có thể giúp tôi với điều này. Cảm ơn trước!

+1

Bạn đang cố gắng đạt được chính xác điều gì? Với mục đích tạo tệp sao lưu mà không cần PC, hãy chạy '/ system/bin/bu backup '. Đó là những gì 'adb backup' thực hiện khi bắt đầu từ PC. –

+0

@AlexP. Cảm ơn bạn đã trả lời. Điều này có thể chỉ là những gì tôi cần, vì tôi đang cố tạo bản sao lưu mà không cần PC. Làm cách nào để tôi có thể đặt vị trí lưu bản sao lưu? Từ mã nguồn của com.android.commands.bu.Backup, không có tham số -f. Ngoài ra, nếu tôi đọc nguồn chính xác, đối số đầu tiên được chuyển (ngay cả trước khi 'sao lưu') được sử dụng sau này (dưới dạng int) để tạo một ParcelFileDescriptor – JooPalmer

+0

@AlexP. Tuy nhiên, '/ system/bin/bu /sdcard/backup.ab backup -all' không tạo tệp backup.ab om sdcard. Điều duy nhất bu bao giờ trở lại là một cảnh báo 'linker: app_process có văn bản relocations.', Mà dường như là do Xposed. Từ những gì tôi đã đọc, đây chỉ là một cảnh báo và hoạt động (bu backup) vẫn nên thực thi. Tôi không thể tìm thấy bất kỳ bằng chứng nào về việc nó được thực hiện. – JooPalmer

Trả lời

-2

Tôi tin rằng thiết bị của bạn có thể đã khởi động lại. Để ban đầu nhận điện thoại của bạn vào tcp, bạn phải chạy adb tcpip 5555 từ máy tính. Nhưng điều đó không kéo dài mãi mãi. Nếu điện thoại của bạn được khởi động lại, thì bạn sẽ phải chạy lại adb tcpip 5555 từ máy tính.

Tôi không chắc chắn những gì bạn có nghĩa là khi bạn nói:

Trying to restart adb(d) in TCP mode is unsuccessful (even though this was not necessary in the working situation). adb tcpip 5555 returns error: device not found.

Cậu chạy mà từ một máy tính? Nếu nó đến từ máy tính thì tôi không chắc vấn đề là gì. Nhưng nếu nó là từ điện thoại, sau đó nó không thể tìm thấy thiết bị để thay đổi để tcp.

Để khắc phục điều này, adb tcpip 5555 từ máy tính sẽ hoạt động.

Các vấn đề liên quan