
مرحبًا هل واجهت الرغبة في نسخ بعض النصوص على جهاز قريب؟ أود أن يكون الأمر بسيطًا مثل لصق النسخ على المحاكي - الكتابة بيديك مملة وليست مريحة دائمًا.
وماذا عن مفتاح التشغيل السريع: اضغط عليه ، ويبدأ النص من حافظة الكمبيوتر في الكتابة على شاشة هاتفك / جهازك اللوحي - يبدو جيدًا ، أليس كذلك؟
في هذه المقالة سنتحدث عن استخدام ADB كأداة نسخ نصية وكيف يمكن القيام بذلك بسهولة.
إذا كنت من مستخدمي ADB من ذوي الخبرة ، ولديك نص برمجي خاص من هذا النوع - أنصحك بالانتقال إلى التنفيذ نفسه ومشاركة أفكارك حول هذا في التعليقات.
ماذا ولماذا
سنقوم بعمل نص صغير يسمح لك بكتابة محتويات الحافظة بسرعة على جهاز حقيقي:

هذا مفيد إذا:
- تحقق من العمل باستخدام الروابط أو أدخل عنوان IP جديدًا لتهيئة الوكيل على الجهاز مرة أخرى:
http:
- تحقق من إدخال الأحرف الخاصة أو أدخل بيانات اختبار صعبة:
v3rY$ecUrEP@s$w0rD
- كان عليك فقط إدخال سطر طويل:
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:
BUexKeGHiERJ4YYbd2_Tk8XlDMVEurbKjWOWvrY
بالطبع ، على الأرجح لن تضطر إلى القيام بذلك بانتظام. ولكن من وقت لآخر ، كانت لدي حالات حيث كان من الضروري إدخال شيء غير مناسب يدويًا لهذا على الجهاز.
في النهاية ، غالبًا ما كانت بيانات الاختبار أو إعدادات واجهة برمجة التطبيقات ، وعلى الرغم من أن البرنامج النصي لم يوفر 5 دقائق ، إلا أنه أدى المهمة بشكل أفضل.
كيف؟
يمكن القيام بذلك باستخدام ADB (Android Debug Bridge) . على الأرجح ، جميع المطورين ومعظم ضمان الجودة على دراية بها ، على الأقل بسبب القدرة على عرض السجلات داخل Android Studio أو مباشرة ، من خلال adb logcat
. إذا لم تكن قد استخدمت adb من قبل ، فيمكن رؤية مثال التثبيت على نظام macOS هنا.
نحن مهتمون بأمر adb shell input
، الذي يسمح بالإدخال ، مثل tap
أو swipe
.
يسمح لك أيضًا بنقل النص - سيبدأ طباعته في حقل الإدخال ، والذي هو الآن في التركيز:
adb shell input text <text>
إذا قمت بإدخال مسافات ، فأنت بحاجة إلى استبدالها بـ %s
، وحروف خاصة للهروب. خلاف ذلك ، لن يعمل شيء.
تجدر الإشارة إلى أن adb يعمل فقط مع الأبجدية اللاتينية والأرقام والشخصيات الخاصة من لوحة ASCII ، والإدخال محدود إلى حد ما:
- لا يعمل مع شخصيات مثل
±§
- لا يعمل مع التفاف السطر (ولكن يمكنك ، على سبيل المثال ، التسبب في التفاف السطر بشكل منفصل عن طريق
adb shell input keyevent 66
آخر باستخدام أمر adb shell input keyevent 66
(إدخال) أو كما هو موضح هنا ) - لا يعمل مع السيريلية
هناك حل مثير للاهتمام لإدخال مثل هذه الأحرف ، ربما سيكون من الممكن ربط الحافظة بها ومن ثم ستتم طباعة أي نص. صحيح ، سيحتاج الجهاز إلى تثبيت apk. مسبقًا باستخدام لوحة مفاتيح.
هام: في النموذج الموضح أعلاه وأدناه ، تشير أوامر ADB إلى توصيل جهاز واحد. إذا كان هناك العديد ، فيمكنك القيام بما يلي:
1) اتصل بالأمر على جهاز معين. -S -s
يمكنك معرفة رقم الجهاز باستخدام أمر adb devices
. ثم استخدم الرقم عند استدعاء الأمر:
$ adb devices List of devices attached 023db62er9dd7d2b device $ adb -s 023db62er9dd7d2b shell input text qwe
2) استدعاء الأمر على جهاز واحد متصل عبر USB - الخيار -d
:
adb -d shell input text qwe
3) استدعاء الأمر على المحاكي النشط الوحيد - خيار -e
:
adb -e shell input text qwe
يمكن العثور على مزيد من التفاصيل هنا .
إذا كنت تعمل مع العديد من الأجهزة وكانت هذه الحالات تتعلق بك ، فقم بتصحيح الأمر adb وفقًا لذلك.
التنفيذ
سنلقي نظرة فاحصة على الحل لنظام macOS ، ولكن هناك أيضًا طريقة للأنظمة الأخرى:
حل لينكس
في وقت من الأوقات ، قدم الرجال من KODE ( Dima Suzdalev و Dima Gaiduk ) حلاً رائعًا لنظام Linux وشاركوه معي.
يعمل من خلال المخزن المؤقت X11 (إذا كان لديك Wayland ، اقرأ أدناه) - حدد نص الرهان ، ثم انقر فوق مفتاح التشغيل السريع الذي يستدعي البرنامج النصي.
من السهل إضافة مثل هذا المفتاح السريع:
1) ضع xclip
2) إضافة ملف نصي
3) اكتب المسار إلى البرنامج النصي في إعدادات الاختصارات للوحة المفاتيح
شكرا لكم شباب واحترام كبير.
هام: يعمل الحل أعلاه مع X11 (Xorg). بالنسبة إلى Wayland ، هذا الحل غير ذي صلة. ما زلت لا أجد طريقة للحصول على المحتوى من المخزن المؤقت في Wayland ، بالحكم من خلال عمليات البحث التي أجريتها ، لا يوجد مثل هذا الاحتمال حتى الآن. صحيح إذا لم يكن صحيحًا.
إذا كنت لا تعرف نوع البيئة التي لديك ، فابحث هنا. على الأرجح ، لديك X11 وسيعمل كل شيء.
حل لنظام macOS
بالنسبة لنظام macOS linux ، لم يكن الحل مناسبًا ، لذلك حاولت إنشاء نص برمجي مماثل يبسط الاستدعاء إلى adb shell input text <text>
.
يجب أن أقول على الفور - العمل مع sed ليس واضحًا بالنسبة لي. حاولت أن أضع فريقًا واحدًا وأن أكمل بشكل طفيف الأنظمة القانونية المختلفة للاستبدال ، مما يساعد على الهروب من الشخصيات الخاصة بشكل صحيح.
إذا اكتشفت كيفية تحسين هذا البرنامج النصي ، فسيكون رائعًا جدًا!
يبدو هذا:
source ~/.bash_profile adb shell input text $(pbpaste | sed -e 's/[_<>|&$;()\"]/\\&/g' -e 's/ /\%s/g' -e 's/!+/!/g')
( source ~/.bash_profile
إضافة source ~/.bash_profile
إذا كان source ~/.bash_profile
يعمل في وحدة التحكم العادية ، ولكن من خلال Automator (المزيد عن ذلك لاحقًا) لم يتم التعرف على ~/.bash_profile
، لهذا تحتاج أولاً إلى سحب المسار إلى adb - على سبيل المثال ، مكتوب في ~/.bash_profile
.)
يعمل مثل adb shell input text <text>
العادي adb shell input text <text>
، ولكن
- مصدر النص هو
pbpaste
- أي pbpaste
. - يعالج النص من الحافظة.
- تم
_<>&$;()\"
الأحرف _<>&$;()\"
: - &
-> \&
- يتم استبدال المسافات بحرف خاص:
` ->
٪ s` - مع علامة التعجب ، كل شيء معقد - إذا شرح لي شخص مثل هذا الاستبدال
!
في !
يساعد الفريق على عدم السقوط - سيكون رائعًا.
حل ويندوز
لسوء الحظ ( أو لا ) على Windows ، لم أحاول القيام بذلك. الخيار الأكثر وضوحًا الذي يتبادر إلى ذهني هو تكييف الحل وتثبيت Cygwin . هذا سيسمح لك بالحصول على طرف لينكس مناسب ، وهو أمر مفيد بالتأكيد.
ستحتاج إلى حزمة sed
وتوابعها cygutils-extra
(توفر أمرًا للحصول على محتويات الحافظة - getclip
لتحل محل pbpaste
)
ستكون النتيجة مشابهة جدًا لحل نظام macOS:
adb shell input text $(getclip | sed -e 's/[_<>|&$;()\"]/\\&/g' -e 's/ /\%s/g' -e 's/!+/!/g')
يتمتع Windows 10 أيضًا بالقدرة على إخراج محطة Linux من العلبة . لم أجرب هذا الخيار ، ولكن يجب أن يبدو كحل مع Cygwin.

النصي في العمل
تبسيط العمل
يمكنك نسخ البرنامج النصي إلى وحدة التحكم في كل مرة أو اكتب adb shell input text <something>
بيديك ، ولكن هذا ليس مناسبًا جدًا. من السهل إنشاء اسم مستعار أو تعيين مفتاح اختصار.
حول الاسم المستعار لوحدة التحكم
تكمن الصعوبة هنا في أنه في الاسم المستعار نفسه ستظل بحاجة إلى الهروب من كل $
و "
لكي يعمل. لم أفعل ذلك بعد ، لأن مفتاح التشغيل السريع أكثر ملاءمة بالنسبة لي. صحيح ، لقد استخدمت هذا من قبل - alias adp='adb shell input text'
ساعد في كتابة كلمة واحدة مثل adp example
. إذا صنع شخص ما اسمًا مستعارًا لنفسه باستخدام نص برمجي ، فاكتب - إرفاقه هنا.
حول مفتاح التشغيل السريع الذي سيقوم بتشغيل البرنامج النصي
إذا تحدثنا عن حل Linux - فكل ذلك يعتمد على التوزيع ، ولكنه ليس صعبًا أيضًا.
يعد حل Windows على Cygwin طريقة سهلة .
في البداية ، كانت المقالة للاستخدام الداخلي ، لذلك تم وصف طريقة macOS بمزيد من التفاصيل ، يمكنك رؤيتها أدناه:
طريقة macOS:هناك العديد من الخيارات لكيفية القيام بذلك ، ولكن يتم تثبيت Automator
افتراضيًا - يمكنك بسرعة إنشاء مفتاح تشغيل سريع باستخدامه.
أولاً ، قم بتشغيل Automator
، وحدد نوع المستند Service
:

ثم قم بتكوين الخدمة:
service receives
تعيين no input
- داخل علامة التبويب "
Actions
، حدد الإجراء Run shell script

يمكنك الآن تعيين مفتاح اختصار للخدمة الجديدة:

هذا كل شيء ، يجب أن يعمل النسخ على الجهاز عن طريق مفتاح التشغيل السريع.
صحيح أن خدمة مفتاح التشغيل السريع ستعمل فقط في التطبيقات التي تكون فيها علامة التبويب " Services
في قائمة التطبيق:

لا يوجد علامة تبويب من هذا القبيل في تطبيق Zeplin لنظام التشغيل macOS ، لذلك لا يعمل هناك. ربما يمكن للتطبيقات الأخرى لاستخدام البرامج النصية التحايل على هذا القيد ؛ حتى الآن ، كان لدي طريقة عبر Automator.
تجدر الإشارة أيضًا إلى أن مفتاح التشغيل السريع يمكنه اعتراض Google Chrome نفسه أو تطبيق آخر وتنفيذ إجراءاته بدلاً من النص البرمجي.
هذا كل شئ
آمل أن تكون هذه المقالة مفيدة وستساعدك على تبسيط حل هذه المشاكل في عملك.