- มีหลายวิธีในการรันสคริปต์บน Android ไม่ว่าจะมีหรือไม่มีรูทก็ตาม
- Google นำเสนอโซลูชั่นขั้นสูงเช่น Firebase Test Lab และ JavaScriptEngine
- สคริปต์ Robo ช่วยให้คุณสามารถทดสอบแอปพลิเคชันมือถือแบบอัตโนมัติได้
- JavaScriptEngine ของ Jetpack ช่วยให้คุณสามารถรันโค้ด JavaScript ได้อย่างมีประสิทธิภาพและปลอดภัย
การรันสคริปต์บน Android กลายเป็นความต้องการที่เพิ่มมากขึ้นในหมู่นักพัฒนา ผู้ที่ชื่นชอบเทคโนโลยี และผู้ใช้งานขั้นสูงที่กำลังมองหาการทำงานอัตโนมัติหรือทดสอบฟีเจอร์เฉพาะภายในแอปของพวกเขา อย่างไรก็ตาม ไม่ใช่ทุกคนที่รู้ว่าจะต้องเริ่มต้นจากที่ไหน ต้องใช้เครื่องมือใด หรือสามารถทำสิ่งนั้นได้โดยไม่ต้องรูทอุปกรณ์หรือไม่
ในบทความนี้ เราจะอธิบายรายละเอียดวิธีต่างๆ ที่มีอยู่ในปัจจุบันสำหรับการรันสคริปต์บนอุปกรณ์ Android จากตัวเลือกง่ายๆ ที่ไม่มีสิทธิ์พิเศษไปจนถึงวิธีขั้นสูงที่รองรับโดย Google และเครื่องมือเฉพาะระบบ หากคุณสนใจที่จะใช้ประโยชน์จากโทรศัพท์ของคุณให้ได้มากขึ้น โปรดอ่านต่อไปเนื่องจากคู่มือนี้จะมีประโยชน์อย่างมาก
การรันสคริปต์บน Android คืออะไร?
กล่าวโดยง่ายการรันสคริปต์บน Android หมายถึงการดำเนินการชุดคำสั่งที่เขียนไว้เพื่อทำงานเฉพาะอย่างสคริปต์เหล่านี้สามารถเขียนได้ด้วยภาษาต่างๆ เช่นPython, JavaScript, shell script (sh) หรือแม้แต่ WebAssembly (Wasm)การใช้งานทั่วไป ได้แก่ การทำงานอัตโนมัติ การทดสอบแอป การจำลองการกระทำของผู้ใช้ และอื่นๆ การรู้วิธีรันสคริปต์บน Android จะช่วยให้งานหลายอย่างง่ายขึ้น
ตัวเลือกในการรันสคริปต์บน Android โดยไม่ต้องรูท
ข้อกังวลทั่วไปอย่างหนึ่งเมื่อพยายามเรียกใช้สคริปต์บน Android คือการเข้าถึงรูท ผู้ใช้ไม่ใช่ทุกคนต้องการหรือสามารถรูทอุปกรณ์ของตนได้ โชคดีที่ยังมีตัวเลือกที่ไม่ต้องใช้สิทธิ์ของผู้ใช้ระดับสูง
แอพพลิเคชันสำหรับรันสคริปต์จาก Android
- SH สคริปต์รันเนอร์:แอปนี้มีให้บริการบน Google Play ช่วยให้คุณสามารถรันสคริปต์ได้โดยตรงจากแอปพลิเคชัน ผู้ใช้บางคนกล่าวว่าหากไม่มีการรูท สคริปต์จะไม่ดำเนินการระบบเช่นการปิดใช้งาน Wi-Fi หรือปิดหน้าจอ อย่างไรก็ตาม สำหรับคำสั่งพื้นฐานหรือสคริปต์ผู้ใช้ก็ทำงานได้ดี
- ข้อจำกัดแบบไม่มีรูท:สคริปต์จำนวนมากล้มเหลวด้วยข้อผิดพลาดเช่น "java.io.IOException: ข้อผิดพลาด = 2 ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว" ซึ่งระบุว่าสคริปต์กำลังพยายามเข้าถึงทรัพยากรที่ได้รับการป้องกันซึ่งสามารถใช้ได้โดยมีสิทธิ์รูทเท่านั้น
- ฟังก์ชั่นที่มีราก:ด้วยสิทธิ์ผู้ใช้ระดับสูง ความสามารถจึงขยายตัวเพิ่มขึ้นอย่างมาก เช่นคุณสามารถใช้คำสั่งเช่น
svc wifi disableoinput keyevent 26การปิด WiFi หรือหน้าจอโดยไม่ล็อคอุปกรณ์ (ซึ่งแอปหน้าจอหลายๆ ตัวทำไม่ได้)
การรันสคริปต์บน Android ด้วย Firebase Test Lab: Robo Scripts
Google นำเสนอตัวเลือกที่มีประสิทธิภาพผ่านFirebase Test Labสำหรับการทดสอบแอป Android แบบอัตโนมัติโดยใช้สิ่งที่เรียกว่าRobo scriptsสคริปต์เหล่านี้ช่วยให้คุณจำลองการกระทำของผู้ใช้ภายในแอป และแม้กระทั่งเรียกใช้คำสั่งระบบได้
Robo Scripts คืออะไร?
นี่คือการบันทึกการกระทำบนส่วนติดต่อผู้ใช้ (UI) ของแอปซึ่งอาจรวมถึงทุกอย่างตั้งแต่การแตะ การป้อนข้อความ และการนำทางหน้าจอ ไปจนถึงเงื่อนไขการทำงานเฉพาะต่างๆ โดยจะทำงานร่วมกับเครื่องมือทดสอบ Robo ของ Firebase เพื่อสำรวจแอปโดยอัตโนมัติ
ข้อได้เปรียบหลักของ Robo Scripting
- ความแข็งแรง: ทนต่อการเปลี่ยนแปลงโครงสร้างของแอป
- ปลายเปิด:เมื่อสคริปต์เสร็จสิ้น การทดสอบอัตโนมัติของ Robo แบบมาตรฐานก็สามารถดำเนินการต่อได้
- บันทึกได้:สามารถบันทึกจาก Android Studio ได้โดยไม่ต้องเขียนโค้ด
- ยืดหยุ่น: ใช้งานได้กับแอปที่มีองค์ประกอบอินเทอร์เฟซที่ไม่ใช่มาตรฐาน เช่น แอปที่ใช้ในเกม
พวกเขาอนุญาตให้คุณทำอะไรได้บ้าง?
ลำดับเหล่านี้สามารถใช้เพื่อ:
- นำแอปไปยังจุดที่เฉพาะเจาะจง ที่จะเริ่มทำการทดสอบ
- จำลองการไหลของผู้ใช้ เพื่อให้แน่ใจว่าได้รับประสบการณ์ที่สม่ำเสมอ
- เรียกใช้คำสั่ง ADB โดยตรงเป็นส่วนหนึ่งของการทดสอบ
วิธีการบันทึกสคริปต์ Robo ใน Android Studio
- เปิด Android Studio และไปที่ เครื่องมือ > Firebase.
- เข้าถึงตัวเลือก บันทึกสคริปต์โรโบ และเลือกอุปกรณ์
- โต้ตอบกับแอปเพื่อบันทึกการกระทำ
- บันทึกไฟล์ JSON ที่สร้างขึ้น
- อัปโหลดไฟล์นี้พร้อมกับ APK ไปยังคอนโซล Firebase เพื่อเรียกใช้การทดสอบ
กระบวนการนี้ไม่จำเป็นต้องใช้ความรู้ขั้นสูง จึงเหมาะสำหรับผู้ทดสอบหรือแม้แต่โปรแกรมเมอร์ระดับเริ่มต้น
เรียกใช้สคริปต์ JavaScript โดยไม่มี WebView ด้วย JavaScriptEngine
ทางเลือกที่ทันสมัยและทรงพลังที่ Android นำเสนอ โดยเฉพาะอย่างยิ่งมีประโยชน์สำหรับแอปพลิเคชัน คือการใช้ไลบรารี JavaScriptEngine ของ Jetpackด้วยไลบรารีนี้ คุณสามารถเรียกใช้โค้ด JavaScript ได้โดยไม่ต้องใช้ WebView ทำให้แอปพลิเคชันมีน้ำหนักเบาและมีประสิทธิภาพมากขึ้น
ข้อดีที่เหนือกว่า WebView
- การใช้ทรัพยากรน้อยลง.
- อนุญาตให้มีสภาพแวดล้อมอิสระหลายแบบ (แยก JavaScript)
- ความปลอดภัยที่มากขึ้นเนื่องจากสคริปต์แต่ละตัวทำงานในสภาพแวดล้อมที่แยกจากกัน
JavaScriptEngine ทำงานอย่างไร
คุณจะต้องสร้างอินสแตนซ์ของ JavaScriptSandbox และจากตรงนั้นได้อนุมานหนึ่ง (หรือหลาย ๆ อัน) JavaScriptIsolate เพื่อรันโค้ด
ตัวอย่างพื้นฐานสำหรับการเพิ่มจาก JavaScript:
JavaScriptIsolate jsIsolate = jsSandbox.createIsolate();
String code = "function sum(a, b) { return (a + b).toString(); }; sum(3, 4)";
ListenableFuture<String> result = jsIsolate.evaluateJavaScriptAsync(code);
ผลลัพธ์ที่ได้ออกมาเป็น เชือก- สำคัญ: คุณไม่สามารถใช้คำนี้ได้ return อยู่นอกฟังก์ชัน เนื่องจากทำงานในโหมดทั่วโลก
ความคงอยู่และการนำกลับมาใช้ใหม่
ข้อได้เปรียบที่สำคัญคือตัวแปรและฟังก์ชันที่ประกาศไว้จะคงอยู่ภายในอินสแตนซ์ซึ่งช่วยให้คุณสามารถเรียกใช้โค้ดหลายส่วนพร้อมทั้งนำข้อมูลกลับมาใช้ซ้ำได้
ความเข้ากันได้และการกำหนดค่าขั้นสูง
อุปกรณ์ไม่ทั้งหมดรองรับคุณสมบัติทั้งหมดของไลบรารี ดังนั้นจึงขอแนะนำให้ตรวจสอบด้วย isFeatureSupported() สิ่งที่มีอยู่ คุณสมบัติขั้นสูงประกอบด้วย:
- การส่งพารามิเตอร์ขนาดใหญ่ ตลอด
provideNamedData(). - สัญญาการสนับสนุน สำหรับสคริปต์แบบอะซิงโครนัส
- การประเมินไฟล์ JavaScript จากดิสก์ด้วย
evaluateJavaScriptAsync(AssetFileDescriptor). - การควบคุมข้อผิดพลาดและความล้มเหลวที่ควบคุมได้ ในขณะที่
SandboxDeadException.
การรันโค้ด WebAssembly บน Android
แม้จะไม่ค่อยเป็นที่รู้จัก แต่ WebAssembly (Wasm) ก็สามารถทำงานบน Android ได้โดยใช้ไลบรารีนี้ ที่สุด? จะทำอย่างปลอดภัยในสภาพแวดล้อมที่แยกตัว
กระบวนการนี้คล้ายกัน: อาร์เรย์ไบต์จะถูกส่งผ่านด้วยรหัส Wasm โดยใช้ provideNamedData() จากนั้นคอมไพล์และรัน ภายในคำสัญญาของ JavaScript
ใช้ Google Apps Script และ AppSheet
หากเป้าหมายของคุณคือการทำงานอัตโนมัติหรือการผสานรวมกับ Google Workspace คุณสามารถใช้Google Apps Script หรือ AppSheet ได้ :
- สคริปต์แอพ:เหมาะสำหรับการสร้างฟังก์ชั่นแบบกำหนดเอง การทำงานอัตโนมัติ เมนูในสเปรดชีตหรือแบบฟอร์ม
- แอพชีต:ช่วยให้คุณสามารถสร้างแอปมือถือโดยไม่ต้องเขียนโค้ด โดยใช้ข้อมูลใน Google Sheets หรือแหล่งอื่นๆ เหมาะสำหรับการทำงานอัตโนมัติโดยไม่ต้องมีความรู้ด้านเทคนิค
โซลูชันเหล่านี้มีข้อจำกัดมากกว่าในแง่ของการควบคุมอุปกรณ์ Android แต่มีประโยชน์ในกรณีการใช้งานทางธุรกิจหรือการศึกษา
ฉันสามารถรันสคริปต์ Python บน Android ได้หรือไม่?
แม้ว่าจะไม่มีการรองรับอย่างชัดเจนในแหล่งข้อมูลที่มีอยู่ แต่ก็เป็นไปได้ที่จะเรียกใช้สคริปต์ Python บน Androidแอปบางตัว เช่นQPython , Pydroid 3และTermuxอนุญาตให้คุณเรียกใช้ไฟล์ .py ได้โดยไม่มีปัญหา คุณจะต้องติดตั้งแอปที่เหมาะสมและโหลดสคริปต์ของคุณลงในแอปนั้น แม้ว่าวิธีการนี้จะไม่ได้ผสานรวมเข้ากับระบบได้ดีเท่ากับตัวเลือกที่กล่าวถึงก่อนหน้านี้ก็ตาม
หากคุณจำเป็นต้องเรียกใช้สคริปต์บน Android คุณมีตัวเลือกมากมายให้เลือก ขึ้นอยู่กับระดับความซับซ้อนที่คุณต้องการ ตั้งแต่การทำงานอัตโนมัติที่เรียบง่าย จนถึงการบูรณาการระบบเชิงลึกหรือการตรวจสอบแอป
ความเป็นไปได้ขั้นสูงและการแบ่งส่วนสภาพแวดล้อม
ในบางกรณีอาจจำเป็นต้องรันสคริปต์แบบคู่ขนานโดยไม่ต้องแชร์บริบท สามารถทำได้โดยการสร้างอินสแตนซ์หลาย ๆ ตัวของ JavaScriptIsolate จากกล่องทรายเดียวกัน สิ่งสำคัญที่ต้องทราบคือ แต่ละอินสแตนซ์เป็นอิสระ และพวกเขาไม่ได้แบ่งปันตัวแปรหรือฟังก์ชั่น
วิธีการนี้เหมาะสำหรับกรณีที่ต้องการเรียกใช้โค้ดที่แยกออกมา หรือโค้ดจากแหล่งที่มาต่างกันโดยเฉพาะในแอปพลิเคชันที่ทำงานร่วมกับผู้ใช้หลายคน หรือมีการบูรณาการกับระบบภายนอก
รองรับ Kotlin และ coroutines
หากคุณกำลังพัฒนาใน Kotlin คุณสามารถใช้ประโยชน์จากโครูทีนเพื่อใช้ JavaScriptEngine แบบอะซิงโครนัสกับไลบรารีได้ kotlinx-coroutines-guava- สิ่งนี้ช่วยให้คุณรวมการไหลของสคริปต์ของคุณโดยไม่บล็อกอินเทอร์เฟซผู้ใช้หรือใช้การโทรกลับที่ซับซ้อน
ตัวอย่าง:
lifecycleScope.launch {
val jsSandbox = JavaScriptSandbox.createConnectedInstanceAsync(applicationContext).await()
val jsIsolate = jsSandbox.createIsolate()
val result = jsIsolate.evaluateJavaScriptAsync("'Script ejecutado con éxito'").await()
textView.text = result
}
แนวทางนี้เหมาะอย่างยิ่งสำหรับนักพัฒนาสมัยใหม่ที่ต้องการใช้ประโยชน์จากเทคโนโลยีล่าสุดของ Google โดยไม่ต้องยุ่งยากกับเธรดหรือคำสัญญาด้วยตนเอง
เมื่อพูดถึงการรันสคริปต์บน Android ความเป็นไปได้นั้นมีมากมายและหลากหลาย ไม่ว่าจะผ่านแอปเฉพาะ ไลบรารีอย่างเป็นทางการที่ให้บริการโดย Google รันไทม์บนคลาวด์อย่าง Firebase หรือเครื่องมืออัตโนมัติอย่าง AppSheet ก็มีโซลูชันสำหรับทุกความต้องการ สิ่งสำคัญคือการเข้าใจข้อจำกัดของแต่ละวิธี โดยเฉพาะอย่างยิ่งหากคุณไม่ได้เชี่ยวชาญ และเลือกวิธีการที่เหมาะสมที่สุดกับระดับทักษะของคุณและวัตถุประสงค์ของสคริปต์
ดัชนี
- 1 การรันสคริปต์บน Android คืออะไร?
- 2 ตัวเลือกในการรันสคริปต์บน Android โดยไม่ต้องรูท
- 3 การรันสคริปต์บน Android ด้วย Firebase Test Lab: Robo Scripts
- 4 เรียกใช้สคริปต์ JavaScript โดยไม่มี WebView ด้วย JavaScriptEngine
- 5 การรันโค้ด WebAssembly บน Android
- 6 ใช้ Google Apps Script และ AppSheet
- 7 ฉันสามารถรันสคริปต์ Python บน Android ได้หรือไม่?
- 8 ความเป็นไปได้ขั้นสูงและการแบ่งส่วนสภาพแวดล้อม
- 9 รองรับ Kotlin และ coroutines