کلاس کمکی برای مدیریت درخواستها و اتصالات به adb.
این در حال حاضر از ورودی/خروجی غیر مسدودکنندهی spin-wait استفاده میکند. یک Selector کارآمدتر خواهد بود، اما برای کاری که ما اینجا انجام میدهیم، بیش از حد به نظر میرسد.
کلاسهای تو در تو |
|---|
class | AdbHelper.AdbResponse پاسخ از بانک توسعه آسیایی. |
روشهای عمومی |
|---|
static void | createForward (InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec) یک پورت فورواردینگ بین یک پورت محلی و یک پورت راه دور ایجاد میکند. |
static AdbCommandRejectedException | createHiddenException (String message, boolean errorDuringDeviceSelection) |
static AdbCommandRejectedException | createHiddenException (String message) |
static byte[] | createJdwpForwardRequest (int pid) یک درخواست ارسال پورت به یک فرآیند jdwp ایجاد میکند. |
static SocketChannel | createPassThroughConnection (InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid) یک سوکت عبوری جدید، از میزبان به پورتی روی دستگاه، ایجاد و متصل میکند. |
static void | createReverse (InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec) یک پورت ایجاد میکند که بین یک پورت ریموت و یک پورت محلی، معکوس عمل میکند. |
static void | executeRemoteCommand (InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits) یک دستور shell را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. |
static void | executeRemoteCommand (InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is) یک دستور از راه دور را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. |
static void | executeRemoteCommand (InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits) یک دستور shell را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. |
static byte[] | formAdbRequest (String payloadString) یک رشته ASCII ایجاد کنید که قبل از آن چهار رقم هگز قرار گرفته باشد. |
static String | getFeatures ( IDevice device) مجموعهای از ویژگیهای پشتیبانیشده را از دستگاه پرسوجو میکند. |
static RawImage | getFrameBuffer (InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit) بافر فریم را از دستگاهی که زمان انقضای آن مشخص شده است، بازیابی کن. |
static String | getHostFeatures () مجموعهای از ویژگیهای پشتیبانیشده را از میزبان ADB پرسوجو میکند. |
static SocketChannel | open (InetSocketAddress adbSockAddr, IDevice device, int devicePort) یک سوکت عبوری جدید، از میزبان به پورتی روی دستگاه، ایجاد و متصل کنید. |
static SocketChannel | rawAdbService (InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service) سرویس را روی یک دستگاه از راه دور فراخوانی کنید. |
static SocketChannel | rawExec (InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters) سرویس host:exec را روی یک دستگاه راه دور فراخوانی کنید. |
static AdbHelper.AdbResponse | readAdbResponse (SocketChannel chan, boolean readDiagString) پاسخ ADB را پس از یک دستور میخواند. |
static void | reboot (String into, InetSocketAddress adbSockAddr, IDevice device) دستگاه را دوباره راه اندازی کنید. |
static void | removeForward (InetSocketAddress adbSockAddr, IDevice device, String localPortSpec) انتقال پورت بین یک پورت محلی و یک پورت راه دور را حذف کنید. |
static void | removeReverse (InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec) حذف پورتی که بین یک پورت ریموت و یک پورت محلی جابجا میشود. |
static void | root (InetSocketAddress adbSockAddr, IDevice device) از adb demon بخواهید که در دستگاه به عنوان root عمل کند. |
static void | setDevice (SocketChannel adbChan, IDevice device) با دادن یک IDevice شماره سریال را بگیرید و به adb بگویید که با آن دستگاه ارتباط برقرار کند. |
static void | setDevice (SocketChannel adbChan, String deviceSerialNumber) به adb میگوید که با یک دستگاه خاص صحبت کند. |
static void | write (SocketChannel chan, byte[] data, int length, int timeout) تا زمانی که تمام دادههای موجود در "data" نوشته شوند، به طول اختیاری برسند، مهلت زمانی منقضی شود یا اتصال قطع شود، بنویسید. |
static void | write (SocketChannel chan, byte[] data) تا زمانی که تمام دادهها در "data" نوشته شوند یا اتصال قطع شود یا زمان انقضا فرا برسد، بنویسید. |
ثابتها
میزبان_حمل_ونقل
public static final String HOST_TRANSPORT
مقدار ثابت: "میزبان:انتقال:"
فیلدها
مجموعه کاراکتر پیشفرض
public static final Charset DEFAULT_CHARSET
روشهای عمومی
ایجادبهجلو
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec) یک پورت فورواردینگ بین یک پورت محلی و یک پورت راه دور ایجاد میکند.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : آدرس سوکت برای اتصال به adb |
device | IDevice : دستگاهی که قرار است پورت فورواردینگ روی آن انجام شود |
localPortSpec | String : مشخصات پورت محلی برای ارسال، باید با فرمت tcp باشد: |
remotePortSpec | String : مشخصات پورت راه دور برای ارسال به آن، یکی از: tcp: چکیده محلی: محلی رزرو شده: سیستم فایل محلی: توسعه: جی دی پی: (فقط از راه دور) |
استثنای پنهان (createHiddenException)
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)| پارامترها |
|---|
message | String |
errorDuringDeviceSelection | boolean |
درخواست ارسالی
public static byte[] createJdwpForwardRequest (int pid)
یک درخواست ارسال پورت به یک فرآیند jdwp ایجاد میکند. این یک آرایه حاوی "####jwdp:{pid}" را برمیگرداند.
| پارامترها |
|---|
pid | int : شناسهی فرآیند jdwp روی دستگاه. |
ایجاد اتصال عبوری
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid) یک سوکت عبوری جدید، از میزبان به پورتی روی دستگاه، ایجاد و متصل میکند.
| پارامترها |
|---|
deviceSerialNumber | String : شماره سریال دستگاهی که باید به آن متصل شوید. میتواند تهی یا خالی باشد که در این صورت اتصال به اولین دستگاه موجود برقرار خواهد شد. |
pid | int : شناسه (pid) فرآیندی که قرار است به آن متصل شوید. |
ایجاد معکوس
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec) یک پورت ایجاد میکند که بین یک پورت ریموت و یک پورت محلی، معکوس عمل میکند.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : آدرس سوکت برای اتصال به adb |
device | IDevice : دستگاهی که قرار است پورت را روی آن معکوس کنیم |
remotePortSpec | String : مشخصات پورت راه دور برای معکوس کردن، یکی از: tcp: چکیده محلی: محلی رزرو شده: سیستم فایل محلی: توسعه: جی دی پی: (فقط از راه دور) |
localPortSpec | String : مشخصات پورت محلی، باید با فرمت tcp باشد: |
اجرای دستور از راه دور
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits) یک دستور shell را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. خروجی به محض رسیدن به rcvr تحویل داده میشود.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : ERROR(/InetSocketAddress) به adb. |
command | String : دستور shell برای اجرا |
device | IDevice : IDevice که دستور روی آن اجرا میشود. |
rcvr | IShellOutputReceiver : IShellOutputReceiver که خروجی دستور shell را دریافت میکند. |
maxTimeToOutputResponse | long : حداکثر زمان بین خروجی دستور. اگر زمان بیشتری بین خروجی دستور بگذرد، متد ShellCommandUnresponsiveException را صادر میکند. مقدار 0 به این معنی است که متد برای همیشه منتظر خروجی دستور میماند و هرگز خطایی صادر نمیکند. |
maxTimeUnits | TimeUnit : واحد برای مقادیر غیر صفر maxTimeToOutputResponse . |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)یک دستور از راه دور را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. خروجی به محض رسیدن به rcvr تحویل داده میشود. دستور توسط سرویس راه دور شناسایی شده توسط پارامتر adbService اجرا میشود.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : ERROR(/InetSocketAddress) به adb. |
adbService | AdbHelper.AdbService : سرویس AdbHelper.AdbService که برای اجرای دستور استفاده میشود. |
command | String : دستور shell برای اجرا |
device | IDevice : IDevice که دستور روی آن اجرا میشود. |
rcvr | IShellOutputReceiver : IShellOutputReceiver که خروجی دستور shell را دریافت میکند. |
maxTimeout | long : حداکثر زمان انتظار برای اجرای کامل دستور. مقدار 0 به معنی عدم وجود زمان انتظار است. |
maxTimeToOutputResponse | long : حداکثر زمان بین خروجی دستور. اگر زمان بیشتری بین خروجی دستور بگذرد، متد ShellCommandUnresponsiveException را صادر میکند. مقدار 0 به این معنی است که متد برای همیشه منتظر خروجی دستور میماند و هرگز خطایی صادر نمیکند. |
maxTimeUnits | TimeUnit : واحد برای مقادیر غیر صفر maxTimeout و maxTimeToOutputResponse . |
is | InputStream : یک ERROR(/InputStream) اختیاری که پس از فراخوانی دستور و قبل از بازیابی پاسخ، به صورت جریانی (streamed) نمایش داده میشود. |
اجرای دستور از راه دور
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)یک دستور shell را روی دستگاه اجرا میکند و خروجی را بازیابی میکند. خروجی به محض رسیدن به rcvr تحویل داده میشود.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : ERROR(/InetSocketAddress) به adb. |
command | String : دستور shell برای اجرا |
device | IDevice : IDevice که دستور روی آن اجرا میشود. |
rcvr | IShellOutputReceiver : IShellOutputReceiver که خروجی دستور shell را دریافت میکند. |
maxTimeout | long : حداکثر زمان برای بازگشت دستور. مقدار 0 به این معنی است که حداکثر زمان انقضا اعمال نخواهد شد. |
maxTimeToOutputResponse | long : حداکثر زمان بین خروجی دستور. اگر زمان بیشتری بین خروجی دستور بگذرد، متد ShellCommandUnresponsiveException را صادر میکند. مقدار 0 به این معنی است که متد برای همیشه منتظر خروجی دستور میماند و هرگز خطایی صادر نمیکند. |
maxTimeUnits | TimeUnit : واحد برای مقادیر غیر صفر maxTimeout و maxTimeToOutputResponse . |
public static byte[] formAdbRequest (String payloadString)
یک رشته ASCII ایجاد کنید که قبل از آن چهار رقم هگز قرار گرفته باشد. "####" آغازین، طول بقیه رشته است که به صورت هگز ASCII کدگذاری شده است (کوچک یا بزرگ بودن حروف مهم نیست).
| پارامترها |
|---|
payloadString | String |
دریافت ویژگیها
public static String getFeatures (IDevice device)
مجموعهای از ویژگیهای پشتیبانیشده را از دستگاه پرسوجو میکند.
| پارامترها |
|---|
device | IDevice : دستگاهی که قرار است پورت فورواردینگ روی آن انجام شود |
دریافت فریم بافر
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)بافر فریم را از دستگاهی که زمان انقضای داده شده را دارد، بازیابی میکند. زمان انقضای ۰ نشان میدهد که تا ابد منتظر خواهد ماند.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress |
device | IDevice |
timeout | long |
unit | TimeUnit |
ویژگیهای getHost
public static String getHostFeatures ()
مجموعهای از ویژگیهای پشتیبانیشده را از میزبان ADB پرسوجو میکند.
باز
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)یک سوکت عبوری جدید، از میزبان به پورتی روی دستگاه، ایجاد و متصل کنید.
| پارامترها |
|---|
device | IDevice : دستگاهی که باید به آن متصل شوید. میتواند null باشد که در این صورت اتصال به اولین دستگاه موجود خواهد بود. |
devicePort | int : پورتی که باز میکنیم |
سرویس rawAdb
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)سرویس را روی یک دستگاه از راه دور فراخوانی کنید. یک کانال سوکت که به فرآیند اجرا متصل است را برگردانید.
ddlmib مالکیت SocketChannel بازگردانده شده را واگذار میکند و باید پس از استفاده صریحاً بسته شود.
| پارامترها |
|---|
device | IDevice : دستگاهی که باید به آن متصل شوید. میتواند null باشد که در این صورت اتصال به اولین دستگاه موجود خواهد بود. |
command | String : دستوری که باید اجرا شود |
service | AdbHelper.AdbService : سرویس AdbHelper.AdbService که برای اجرای دستور استفاده میشود. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)سرویس host:exec را روی یک دستگاه از راه دور فراخوانی کنید. یک کانال سوکت که به فرآیند اجرا متصل است را برگردانید. توجه داشته باشید که سرویس exec تفاوتی بین stdout و stderr قائل نمیشود، بنابراین هر آنچه از سوکت خوانده میشود میتواند از هر دو خروجی آمده و در هم آمیخته شود.
ddlmib مالکیت SocketChannel بازگردانده شده را واگذار میکند و باید پس از استفاده صریحاً بسته شود.
| پارامترها |
|---|
device | IDevice : دستگاهی که باید به آن متصل شوید. میتواند null باشد که در این صورت اتصال به اولین دستگاه موجود خواهد بود. |
executable | String : مسیر مطلق فایل اجرایی برای اجرا |
parameters | String : پارامترهایی که هنگام اجرای فایل اجرایی دریافت میشوند |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)پاسخ ADB را پس از یک دستور میخواند.
| پارامترها |
|---|
chan | SocketChannel : کانال سوکتی که به adb متصل است. |
readDiagString | boolean : اگر درست باشد، انتظار داریم یک پاسخ OKY به همراه یک رشته تشخیصی به دنبال آن بیاید. در غیر این صورت، فقط انتظار داریم رشته تشخیصی به دنبال یک رشته FAIL بیاید. |
| پرتابها |
|---|
TimeoutException | در صورت اتمام زمان اتصال. |
| در صورت بروز خطای ورودی/خروجی در اتصال. |
راه اندازی مجدد
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)دستگاه را دوباره راه اندازی کنید.
| پارامترها |
|---|
into | String : چیزی که باید ریبوت شود (ریکاوری، بوتلودر). یا null برای ریبوت کردن. |
adbSockAddr | InetSocketAddress |
device | IDevice |
حذف به جلو
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)انتقال پورت بین یک پورت محلی و یک پورت راه دور را حذف کنید.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : آدرس سوکت برای اتصال به adb |
device | IDevice : دستگاهی که میخواهید پورت فورواردینگ را روی آن حذف کنید |
localPortSpec | String : مشخصات پورت محلی که ارسال شده است، باید با فرمت tcp باشد: |
حذف معکوس
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)حذف پورتی که بین یک پورت ریموت و یک پورت محلی جابجا میشود.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress : آدرس سوکت برای اتصال به adb |
device | IDevice : دستگاهی که پورت روی آن به صورت معکوس حذف میشود |
remotePortSpec | String : مشخصات پورت راه دور که به آن معکوس شده است، یکی از: tcp: چکیده محلی: محلی رزرو شده: سیستم فایل محلی: توسعه: جی دی پی: (فقط از راه دور) |
ریشه
public static void root (InetSocketAddress adbSockAddr,
IDevice device)از adb demon بخواهید که در دستگاه به عنوان root عمل کند. این کار ممکن است بیسروصدا انجام نشود و فقط در نسخههای توسعهدهندگان میتواند موفق باشد. برای اطلاعات بیشتر به «adb root» مراجعه کنید. اگر میخواهید بدانید که آیا موفق شدهاید یا خیر، میتوانید نتیجه executeRemoteCommand را روی 'echo \$USER_ID' بررسی کنید، اگر 0 باشد، adbd به عنوان root در حال اجرا است.
| پارامترها |
|---|
adbSockAddr | InetSocketAddress |
device | IDevice |
دستگاه تنظیمشده
public static void setDevice (SocketChannel adbChan,
IDevice device)با دادن یک IDevice شماره سریال را بگیرید و به adb بگویید که با آن دستگاه ارتباط برقرار کند.
| پارامترها |
|---|
adbChan | SocketChannel : اتصال سوکت به adb. |
device | IDevice : دستگاهی که قرار است با آن صحبت کنید. |
دستگاه تنظیمشده
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)به adb میگوید که با یک دستگاه خاص صحبت کند.
| پارامترها |
|---|
adbChan | SocketChannel : اتصال سوکت به adb |
deviceSerialNumber | String : سریال دستگاهی که قرار است با آن ارتباط برقرار شود، اگر null باشد، دستگاه پیشفرض انتخاب شده، دستگاهی است که توسط adb انتخاب شده است. |
بنویس
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)تا زمانی که تمام دادههای موجود در "data" نوشته شوند، به طول اختیاری برسند، زمان انقضا تمام شود یا اتصال قطع شود، بنویسید. اگر تمام دادهها نوشته شده باشند، "true" را برمیگرداند.
| پارامترها |
|---|
chan | SocketChannel : سوکت باز شده برای نوشتن. |
data | byte : بافری که قرار است ارسال شود. |
length | int : طول مورد نظر برای نوشتن یا -1 برای ارسال کل بافر. |
timeout | int : مقدار timeout. مقدار timeout برابر با صفر به معنی "تا ابد منتظر ماندن" است. |
| پرتابها |
|---|
TimeoutException | در صورت اتمام زمان اتصال. |
| در صورت بروز خطای ورودی/خروجی در اتصال. |
بنویس
public static void write (SocketChannel chan,
byte[] data)تا زمانی که تمام دادهها در "data" نوشته شوند یا اتصال قطع شود یا زمان انقضا فرا برسد، بنویسید.
این از مقدار پیشفرض زمان انقضا استفاده میکند.
| پارامترها |
|---|
chan | SocketChannel : سوکت باز شده برای نوشتن. |
data | byte : بافری که قرار است ارسال شود. |
| پرتابها |
|---|
TimeoutException | در صورت اتمام زمان اتصال. |
| در صورت بروز خطای ورودی/خروجی در اتصال. |
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-12-04 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-12-04 بهوقت ساعت هماهنگ جهانی."],[],[]]