ฉันจะส่งความตั้งใจโดยใช้เครื่องมือ ADB ของ Android ได้อย่างไร
ฉันจะส่งความตั้งใจโดยใช้เครื่องมือ ADB ของ Android ได้อย่างไร
คำตอบ:
adb shell
am start -n com.package.name/com.package.name.ActivityName
หรือคุณสามารถใช้สิ่งนี้โดยตรง:
adb shell am start -n com.package.name/com.package.name.ActivityName
นอกจากนี้คุณยังสามารถระบุการกระทำที่จะกรองโดยตัวกรองเจตนาของคุณ:
am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
และใช้งานได้มากขึ้น androidrun com.example.test
adb shell am
จะให้รายการตัวเลือกอื่น ๆ แก่คุณเพื่อส่งไปยังam
คำสั่ง คุณสามารถหาข้อมูลเพิ่มเติมได้ที่developer.android.com/tools/help/adb.html#am
adb logcat | grep --line-buffered ActivityManager | grep --line-buffered
เพื่อแสดงรายการแอปพลิเคชันทั้งหมดที่แสดง
เป็นไปได้ที่จะเรียกใช้แอปพลิเคชันที่ระบุชื่อแพ็คเกจโดยใช้เครื่องมือลิงโดยทำตามรูปแบบนี้:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
คำสั่งถูกใช้เพื่อเรียกใช้แอพโดยใช้เครื่องมือลิงซึ่งสร้างอินพุตสุ่มสำหรับแอปพลิเคชัน ส่วนสุดท้ายของคำสั่งคือจำนวนเต็มซึ่งระบุจำนวนอินพุตสุ่มที่สร้างขึ้นสำหรับแอป ในกรณีนี้หมายเลขคือ 1 ซึ่งจริงๆแล้วใช้เพื่อเรียกใช้แอพ (ไอคอนคลิก)
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
ดูที่นี่: stackoverflow.com/a/18703083/211292
หรือคุณสามารถใช้สิ่งนี้:
adb shell am start -n com.package.name/.ActivityName
monkey -p com.package.name 1
ผ่านadb shell
ผู้ใช้ linux / mac ยังสามารถสร้างสคริปต์เพื่อเรียกใช้ apk ด้วยสิ่งต่อไปนี้:
สร้างไฟล์ชื่อ "adb-run.sh" ด้วย 3 บรรทัดเหล่านี้:
pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act
จากนั้น "chmod + x adb-run.sh" เพื่อให้สามารถเรียกใช้งานได้
ตอนนี้คุณสามารถ:
adb-run.sh myapp.apk
ประโยชน์ที่ได้รับคือคุณไม่จำเป็นต้องรู้ชื่อแพ็คเกจหรือชื่อกิจกรรมที่เรียกใช้งานได้ ในทำนองเดียวกันคุณสามารถสร้าง "adb-uninstall.sh myapp.apk"
หมายเหตุ: สิ่งนี้ต้องการให้คุณมี aapt ในเส้นทางของคุณ คุณสามารถค้นหาได้ภายใต้โฟลเดอร์เครื่องมือสร้างใหม่ใน SDK
นอกจากนี้ฉันต้องการพูดถึงอีกสิ่งหนึ่ง
เมื่อคุณเริ่มต้นโปรแกรมจากadb shell am
, มันจะเพิ่มธง FLAG_ACTIVITY_NEW_TASKซึ่งจะทำให้การเปลี่ยนแปลงพฤติกรรม ดูรหัสรหัส
ตัวอย่างเช่นหากคุณเปิดกิจกรรม Play Store จากadb shell am
การกดปุ่ม ' ย้อนกลับ ' (ปุ่มย้อนกลับฮาร์ดแวร์) จะไม่นำแอปของคุณมาแทนที่กิจกรรมก่อนหน้านี้จะเป็นกิจกรรม Play Store ของคุณหากมีบางอย่าง (ถ้าไม่มีงาน Play store แล้วมันจะพาคุณแอปของคุณ)เอกสารประกอบ FLAG_ACTIVITY_NEW_TASKพูดว่า:
หากภารกิจกำลังทำงานอยู่สำหรับกิจกรรมที่คุณเริ่มแล้วกิจกรรมใหม่จะไม่เริ่มขึ้น แทนงานปัจจุบันจะถูกนำไปที่ด้านหน้าของหน้าจอโดยมีสถานะเป็นครั้งสุดท้าย
นี่ทำให้ฉันใช้เวลาสองสามชั่วโมงเพื่อค้นหาว่ามีอะไรผิดพลาด
ดังนั้นจำไว้ว่าธงเพิ่มadb shell am
FLAG_ACTIVITY_NEW_TASK
เราสามารถเริ่มต้นแอปพลิเคชันได้ด้วยการรู้ประเภทแอปพลิเคชันและป้อนข้อมูลด้วย:
adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
คำสั่งนี้แสดงเครื่องเล่นวิดีโอที่มีอยู่เพื่อเล่นไฟล์sample.3gp
ขั้นตอนที่ 1: รับชื่อแพ็กเกจทั้งหมดของแอพที่ติดตั้งในอุปกรณ์ของคุณโดยใช้:
adb shell pm list packages
ขั้นตอนที่ 2: คุณจะได้รับชื่อแพ็กเกจทั้งหมดคัดลอกชื่อที่คุณต้องการเริ่มใช้ adb
ขั้นตอนที่ 3: เพิ่มชื่อแพ็คเกจที่คุณต้องการในคำสั่งด้านล่าง
adb shell monkey -p 'your package name' -v 500
ตัวอย่างเช่น:
adb shell monkey -p com.estrongs.android.pop -v 500
เพื่อเริ่มต้น Es explorer
เปิด~ / .bash_profile และเพิ่มฟังก์ชั่นทุบตีเหล่านี้ในตอนท้ายของไฟล์
function androidinstall(){
adb install -r ./bin/$1.apk
}
function androidrun(){
ant clean debug
adb shell am start -n $1/$1.$2
}
จากนั้นเปิดโฟลเดอร์โครงการ Android
androidinstall app-debug && androidrun com.example.app MainActivity
app-debug
บ้าง?
monkey --pct-syskeys 0
สำหรับบอร์ดพัฒนา
หากไม่มีอาร์กิวเมนต์นี้แอปจะไม่เปิดบนบอร์ดพัฒนาโดยไม่ใช้คีย์ / จอแสดงผล:
adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1
และล้มเหลวด้วยข้อผิดพลาด:
SYS_KEYS has no physical keys but with factor 2.0%
ทดสอบกับ HiKey960, Android O AOSP
เรียนรู้จาก: https://github.com/ARM-software/lisa/pull/408
ถามเพิ่มเติมได้ที่: การทดสอบลิง: หากระบบ Android ไม่มีปุ่มทางกายภาพจำเป็นต้องรวมพารามิเตอร์อะไรในคำสั่ง
adb shell am start -n '<appPackageName>/.<appActitivityName>
Ex:
adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'
คุณสามารถใช้แอพพลิเคชั่น APK-INFO เพื่อรับทราบรายการกิจกรรมแอพที่เกี่ยวกับแต่ละแอพแพ็คเกจ
ลองทำเช่นนี้เพื่อเปิดแอปพลิเคชั่นภาพถ่ายแอนดรอยด์ & ด้วยไฟล์รูปภาพเฉพาะเพื่อเปิดเป็นพารามิเตอร์
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
มันจะทำงานกับ Android ล่าสุดไม่มีป๊อปอัปจะมาเลือกแอปพลิเคชั่นที่จะเปิดในขณะที่คุณกำลังให้แอพเฉพาะที่คุณต้องการเปิดภาพด้วย