ระบบนิเวศของ Android ใช้รูปแบบไฟล์ที่หลากหลายสำหรับการบรรจุ แจกจ่าย และจัดเก็บข้อมูลแอป หากคุณเคยดาวน์โหลดแอปจากแหล่งบุคคลที่สาม คุณอาจพบนามสกุลไฟล์ที่นอกเหนือจาก APK ที่คุ้นเคย รูปแบบต่างๆ เช่น XAPK, APKS, APKM, AAB และ OBB ต่างก็มีจุดประสงค์เฉพาะในวงจรการใช้งานแอป Android
คู่มือนี้มีไว้เพื่อเป็นข้อมูลอ้างอิงที่สมบูรณ์สำหรับไฟล์รูปแบบ Android หลักๆ ทุกรูปแบบ นักพัฒนา ผู้ใช้ระดับสูงที่ไซด์โหลดแอป และผู้อ่านที่อยากรู้อยากเห็นซึ่งต้องการทราบว่าจริงๆ แล้วไฟล์เหล่านี้มีอะไรบ้าง จะพบแต่ละรูปแบบที่อธิบายเป็นภาษาธรรมดาด้านล่างนี้
APK: ชุดแพ็คเกจ Android
APK เป็นรูปแบบไฟล์พื้นฐานสำหรับแอปพลิเคชัน Android ซึ่งเป็นรูปแบบการติดตั้งมาตรฐานตั้งแต่เริ่มก่อตั้ง Android และยังคงเป็นรูปแบบที่ระบบปฏิบัติการ Android เข้าใจในการติดตั้งแอป
ประกอบด้วยอะไรบ้าง
ไฟล์ APK นั้นเป็นไฟล์ ZIP ที่มีโครงสร้างภายในเฉพาะ:
- AndroidManifest.xml ซึ่งเป็นไฟล์ XML ไบนารีที่ประกาศชื่อแพ็กเกจ ส่วนประกอบ สิทธิ์ และข้อกำหนดของแอป
- classes.dex (และ classes2.dex ฯลฯ) รวบรวมโค้ดไบต์ Dalvik ที่มีโค้ด Java/Kotlin ของแอป
- resources.arsc ตารางทรัพยากรที่คอมไพล์แล้วแมปรหัสทรัพยากรกับค่าของพวกเขา
- res/ ไดเร็กทอรีที่มีทรัพยากร เช่น โครงร่าง สิ่งที่วาดได้ และสตริงที่อ้างอิงโดย ID
- assets/ ไฟล์สินทรัพย์ดิบที่แอปเข้าถึงขณะรันไทม์ผ่าน AssetManager
- lib/ ไลบรารีเนทิฟที่จัดโดยสถาปัตยกรรม CPU (เช่น lib/arm64-v8a/)
- META-INF/ ไฟล์ลายเซ็นและข้อมูลใบรับรอง
เมื่อคุณเจอกับมัน
ไฟล์ APK คือสิ่งที่คุณดาวน์โหลดเมื่อไซด์โหลดแอปจากแหล่งบุคคลที่สาม นอกจากนี้ยังเป็นสิ่งที่ได้รับการติดตั้งบนอุปกรณ์ของคุณจาก Play Store แม้ว่าการติดตั้ง Play Store สมัยใหม่มักจะใช้ APK แยกที่สร้างจาก App Bundle
วิธีจัดการกับมัน
สามารถติดตั้งไฟล์ APK บน Android ได้โดยตรงโดยเปิดด้วยตัวจัดการไฟล์หรือใช้ adb install คุณยังสามารถตรวจสอบเนื้อหาได้ด้วยการเปลี่ยนชื่อส่วนขยายเป็น .zip แล้วแตกไฟล์ หรือใช้ เครื่องมือตรวจสอบ APK ของเราเพื่อตรวจสอบลายเซ็นและข้อมูลเมตา
AAB: ชุดแอป Android
Android App Bundle คือรูปแบบการเผยแพร่ของ Google สำหรับ Play Store ตั้งแต่เดือนสิงหาคม 2021 แอปใหม่ทั้งหมดใน Play Store จะต้องส่งเป็น AAB แทนที่จะเป็น APK
ประกอบด้วยอะไรบ้าง
ไฟล์ AAB ใช้รูปแบบตามบัฟเฟอร์โปรโตคอลและมี:
- รหัสแอป โมดูลฐาน: Core และทรัพยากรที่จำเป็นสำหรับทุกอุปกรณ์
- ทรัพยากร การแยกการกำหนดค่า: จัดระเบียบตามความหนาแน่นของหน้าจอ สถาปัตยกรรม CPU และภาษา
- โมดูลคุณลักษณะแบบไดนามิก: คุณสมบัติเสริมที่สามารถดาวน์โหลดได้ตามความต้องการ
- คำแนะนำ ข้อมูลเมตาของชุดรวม: สำหรับ Google Play เกี่ยวกับวิธีสร้าง APK เฉพาะอุปกรณ์
เมื่อคุณเจอกับมัน
ในฐานะผู้ใช้ทั่วไป โดยทั่วไปแล้ว คุณจะไม่พบไฟล์ AAB โดยตรง นักพัฒนาใช้สิ่งเหล่านี้ในระหว่างกระบวนการสร้างและอัพโหลด อย่างไรก็ตาม หากคุณได้รับไฟล์ AAB (อาจมาจาก build artifact ของโปรเจ็กต์โอเพ่นซอร์ส) คุณจะต้องแปลงไฟล์เป็นรูปแบบ APK ก่อนการติดตั้ง
วิธีจัดการกับมัน
ใช้โปรแกรมอรรถประโยชน์บรรทัดคำสั่ง bundletool ของ Google หรือ เครื่องมือแปลง AAB เป็น APK ของเราเพื่อสร้าง APK ที่ติดตั้งได้จากไฟล์ AAB กระบวนการแปลงจะสร้าง APK สากล (ใหญ่กว่า ใช้งานได้ทุกที่) หรือ APK เฉพาะอุปกรณ์ (เล็กกว่า กำหนดเป้าหมายอุปกรณ์)
XAPK: APK แบบขยาย
XAPK เป็นรูปแบบคอนเทนเนอร์ที่ APKPure ได้รับความนิยม ซึ่งรวม APK เข้ากับไฟล์ข้อมูล OBB ที่เกี่ยวข้อง หรือแยกการกำหนดค่า APK ออกเป็นแพ็คเกจเดียวที่ดาวน์โหลดได้
ประกอบด้วยอะไรบ้าง
ไฟล์ XAPK เป็นไฟล์ ZIP ที่ประกอบด้วย:
- ไฟล์ APK พื้นฐาน (แอปพลิเคชันหลัก)
- ไฟล์ OBB (ข้อมูลขยายสำหรับเกมและแอพขนาดใหญ่)
- หรือเลือกแยกไฟล์ APK สำหรับการกำหนดค่าอุปกรณ์ที่แตกต่างกัน
- ไฟล์ manifest.json ที่อธิบายเนื้อหาแพ็คเกจและคำแนะนำในการติดตั้ง
- ไฟล์ไอคอนเพื่อการแสดงผล
เมื่อคุณเจอกับมัน
คุณพบไฟล์ XAPK เมื่อดาวน์โหลดแอปหรือเกมขนาดใหญ่จากคลังแอปของบุคคลที่สาม เกมที่ต้องใช้ไฟล์ข้อมูลเพิ่มเติม (ก่อนหน้านี้แจกจ่ายเป็นไฟล์ OBB) โดยทั่วไปจะรวมแพ็กเกจเป็น XAPK เพื่อทำให้กระบวนการดาวน์โหลดง่ายขึ้นเป็นไฟล์เดียว
วิธีจัดการกับมัน
ไฟล์ XAPK ไม่สามารถติดตั้งได้โดยตรงโดยตัวติดตั้งแพ็คเกจเริ่มต้นของ Android คุณต้องมีแอปตัวติดตั้ง XAPK โดยเฉพาะ หรือคุณสามารถใช้ เครื่องมือแปลง XAPK เป็น APK ของเราเพื่อแยก APK พื้นฐานได้ สำหรับเกมที่ต้องใช้ข้อมูล OBB คุณจะต้องแยกและวางไฟล์ OBB ในไดเร็กทอรีที่ถูกต้องโดยใช้ เครื่องแยก OBB ของเรา
APKS: ชุด APK
รูปแบบ APKS เป็นผลลัพธ์ของ Bundletool ของ Google เมื่อสร้าง APK เฉพาะอุปกรณ์จากไฟล์ AAB เครื่องมือสำรองข้อมูลแอปบางตัวยังใช้เพื่อจัดเก็บการติดตั้ง APK แบบแยกส่วนอีกด้วย
ประกอบด้วยอะไรบ้าง
ไฟล์ APKS เป็นไฟล์ ZIP ที่ประกอบด้วย:
- toc.pb สารบัญบัฟเฟอร์โปรโตคอลที่อธิบายโครงสร้างการแยก
- splits/ ไดเรกทอรีที่มี APK พื้นฐานและ APK แยกการกำหนดค่าทั้งหมด
- หรือเลือก APK แบบสแตนด์อโลนสำหรับอุปกรณ์ที่ไม่รองรับการติดตั้งแบบแยกส่วน
เมื่อคุณเจอกับมัน
คุณพบไฟล์ APKS เมื่อใช้ Bundletool ในเครื่อง เมื่อสำรองข้อมูลแอปที่ติดตั้งจาก Play Store หรือเมื่อดาวน์โหลดจากที่เก็บของบุคคลที่สามบางแห่งที่คงโครงสร้าง APK แบบแยกไว้
วิธีจัดการกับมัน
คุณสามารถติดตั้งไฟล์ APKS โดยใช้คำสั่ง install-apks ของ Bundletool หรือแปลงเป็น APK เดียวโดยใช้ การรวม APKS เป็น APK ของเรา โปรดทราบว่าการรวม APK ที่แยกออกเป็น APK สากลอาจเพิ่มขนาดไฟล์เนื่องจากทรัพยากรการกำหนดค่าทั้งหมดรวมกัน
APKM: แพ็คเกจ APKMirror
APKM เป็นรูปแบบคอนเทนเนอร์ที่เป็นกรรมสิทธิ์ซึ่งสร้างโดย APKMirror เพื่อเผยแพร่แอปที่ประกอบด้วย APK ที่แยกหลายรายการ มีจุดประสงค์คล้ายกับ XAPK และ APKS แต่ใช้โครงสร้างของ APKMirror เอง
ประกอบด้วยอะไรบ้าง
ไฟล์ APKM เป็นไฟล์ ZIP ที่ประกอบด้วย:
- ไฟล์ APK พื้นฐาน
- แยกไฟล์ APK สำหรับการกำหนดค่าต่างๆ (ความหนาแน่น, ABI, ภาษา)
- ไฟล์ข้อมูลเมตาที่อธิบายโครงสร้างแพ็กเกจ
เมื่อคุณเจอกับมัน
คุณพบไฟล์ APKM โดยเฉพาะเมื่อดาวน์โหลดจาก APKMirror เว็บไซต์ใช้รูปแบบนี้สำหรับแอปที่เผยแพร่เป็น App Bundle ใน Play Store ดังนั้นจึงประกอบด้วย APK แยกหลายรายการ
วิธีจัดการกับมัน
ไฟล์ APKM ต้องใช้แอป APKMirror Installer สำหรับการติดตั้งโดยตรง หรือคุณสามารถแยกเนื้อหา (เนื่องจากเป็นไฟล์ ZIP) และติดตั้ง APK แบบแยกด้วยตนเองโดยใช้คำสั่ง install-multiple ของ ADB APK พื้นฐานสามารถแยกและติดตั้งแบบสแตนด์อโลนได้ แม้ว่าฟังก์ชันบางอย่างอาจถูกจำกัดโดยไม่มีการแยกการกำหนดค่า
OBB: Blob ไบนารีทึบแสง
ไฟล์ OBB เป็นไฟล์ขยายที่ใช้โดยแอป Android (โดยเฉพาะเกม) เพื่อจัดเก็บข้อมูลจำนวนมากซึ่งเกินขีดจำกัดขนาด APK ของ Play Store แม้ว่า Google จะเปลี่ยนระบบนี้ไปเป็น Play Asset Delivery แล้ว แต่แอปที่มีอยู่จำนวนมากยังคงใช้ไฟล์ OBB
ประกอบด้วยอะไรบ้าง
ไฟล์ OBB สามารถมีข้อมูลประเภทใดก็ได้ที่แอปต้องการ:
- พื้นผิวเกมและโมเดล 3 มิติ
- ไฟล์เสียงและเพลงประกอบ
- เนื้อหาวิดีโอ
- ข้อมูลระดับและแผนที่
- ข้อมูลไบนารีขนาดใหญ่ที่นักพัฒนาเลือกที่จะจัดเก็บภายนอก
รูปแบบของข้อมูลภายในไฟล์ OBB ขึ้นอยู่กับนักพัฒนาซอฟต์แวร์ บางตัวใช้การบีบอัด ZIP บางตัวใช้รูปแบบไบนารีแบบกำหนดเอง ชื่อ "ทึบแสง" บ่งบอกว่า Android ถือว่าไฟล์เป็นกล่องดำ
เมื่อคุณเจอกับมัน
ไฟล์ OBB จะถูกพบเมื่อไซด์โหลดเกมขนาดใหญ่หรือเมื่อรวมไว้ในแพ็คเกจ XAPK พวกเขาจะถูกเก็บไว้ที่ /Android/obb/[package.name]/ บนที่จัดเก็บข้อมูลที่ใช้ร่วมกันของอุปกรณ์
วิธีจัดการกับมัน
ไฟล์ OBB จะต้องอยู่ในไดเรกทอรีที่ถูกต้องเพื่อให้แอปค้นหาได้ โดยทั่วไปชื่อไฟล์จะเป็นไปตามรูปแบบ main.[version].[package.name].obb หรือ patch.[version].[package.name].obb ใช้ เครื่องแยก OBB ของเราเพื่อแยกไฟล์ OBB จากแพ็คเกจ XAPK
DEX: Dalvik ปฏิบัติการได้
ไฟล์ DEX มีรหัสไบต์ที่คอมไพล์แล้วซึ่งทำงานบนสภาพแวดล้อมรันไทม์ของ Android พบได้ในไฟล์ APK แต่สามารถมีอยู่ได้อย่างอิสระระหว่างการพัฒนาและการดีบัก
ประกอบด้วยอะไรบ้าง
ไฟล์ DEX ประกอบด้วย:
- คอมไพล์โค้ดไบต์ Java/Kotlin ในรูปแบบคำสั่ง Dalvik
- ค่าคงที่สตริงและคำจำกัดความประเภท
- การอ้างอิงวิธีการและฟิลด์
- คำจำกัดความของคลาสและลำดับชั้น
รายละเอียดทางเทคนิค
ไฟล์ DEX ไฟล์เดียวมีขีดจำกัดการอ้างอิงวิธี 65,536 (ขีดจำกัด "64K") แอพที่เกินขีดจำกัดนี้จะใช้ไฟล์ DEX หลายไฟล์ (classes.dex, classes2.dex ฯลฯ) ซึ่งเป็นเทคนิคที่เรียกว่า multidex เครื่องมือสร้างสมัยใหม่จะจัดการเรื่องนี้โดยอัตโนมัติ
ไฟล์ ODEX, VDEX และ ART
ไฟล์ DEX เวอร์ชันปรับปรุงเหล่านี้สร้างขึ้นโดย Android Runtime ระหว่างหรือหลังการติดตั้ง:
- ODEX (DEX ที่ปรับให้เหมาะสม): ประกอบด้วยโค้ดเครื่องเนทิฟที่คอมไพล์ล่วงหน้าสำหรับวิธีการที่ใช้บ่อย สร้างขึ้นระหว่างการบำรุงรักษาที่ไม่ได้ใช้งานตามโปรไฟล์การใช้งาน
- VDEX (DEX ที่ยืนยันแล้ว): มีโค้ดไบต์ DEX ที่ตรวจสอบแล้วพร้อมผลการตรวจสอบที่คำนวณไว้ล่วงหน้า วิธีนี้จะช่วยเพิ่มความเร็วในการบูตและการเปิดตัวแอปครั้งต่อๆ ไปโดยการข้ามการยืนยันซ้ำ
- ART (อิมเมจรันไทม์ของ Android): ประกอบด้วยอ็อบเจ็กต์คลาสและข้อมูลฮีปที่เตรียมใช้งานล่วงหน้า ซึ่งช่วยให้รันไทม์ข้ามการโหลดคลาสและการเริ่มต้นสำหรับคลาสเฟรมเวิร์กทั่วไประหว่างการเริ่มต้นระบบ
ไฟล์เหล่านี้สร้างขึ้นโดยระบบและไม่ใช่สิ่งที่ผู้ใช้โต้ตอบโดยตรง พวกเขาจะถูกเก็บไว้ใน /data/dalvik-cache/ หรือข้าง APK ใน /data/app/
SO: วัตถุที่ใช้ร่วมกัน (ไลบรารีดั้งเดิม)
ไฟล์ที่มีนามสกุล .so เป็นไลบรารีแบบแบ่งใช้แบบเนทิฟที่คอมไพล์สำหรับสถาปัตยกรรม CPU เฉพาะ ประกอบด้วยรหัสเครื่องที่เขียนด้วยภาษา C, C++ หรือ Rust ที่ทำงานบนโปรเซสเซอร์โดยตรงโดยไม่ใช้โอเวอร์เฮดของรันไทม์ Dalvik/ART
ความหลากหลายทางสถาปัตยกรรม
- armeabi-v7a, ARM 32 บิต (อุปกรณ์รุ่นเก่าส่วนใหญ่)
- arm64-v8a, ARM 64 บิต (โทรศัพท์สมัยใหม่ส่วนใหญ่)
- x86, Intel/AMD 32 บิต (แท็บเล็ตและโปรแกรมจำลองบางรุ่น)
- x86_64, Intel/AMD 64 บิต (Chromebook และโปรแกรมจำลอง)
เมื่อ APK มีไลบรารีดั้งเดิม จะต้องมีสถาปัตยกรรมที่ถูกต้องสำหรับอุปกรณ์เป้าหมาย หากรวมสถาปัตยกรรมที่ไม่ถูกต้อง แอปจะขัดข้องด้วย UnsatisfiedLinkError
ไฟล์ XML ใน Android
Android ใช้ XML อย่างกว้างขวาง แต่อยู่ในสองรูปแบบที่แตกต่างกัน:
XML ไบนารี
ภายในไฟล์ APK ทรัพยากร XML (เลย์เอาต์ รายการ ไฟล์สตริง) จะถูกจัดเก็บในรูปแบบไบนารีที่คอมไพล์แล้วที่เรียกว่า AXML รูปแบบนี้มีขนาดกะทัดรัดและแยกวิเคราะห์ได้เร็วกว่าข้อความ XML เครื่องมือเช่น aapt2 หรือ apktool สามารถถอดรหัส XML ไบนารีกลับไปเป็นข้อความที่อ่านได้
ข้อความ XML
ในระหว่างการพัฒนา ไฟล์ XML จะอยู่ในรูปแบบข้อความมาตรฐาน กระบวนการสร้างจะคอมไพล์เป็น XML ไบนารีเพื่อรวมไว้ใน APK ไฟล์การกำหนดค่า เช่น network_security_config.xml และไฟล์ทรัพยากรในไดเร็กทอรี res/ เริ่มต้นเป็นข้อความ XML
ไฟล์การแมป ProGuard/R8
แม้ว่าจะไม่ใช่รูปแบบเฉพาะของ Android แต่ไฟล์การแมป (mapping.txt) ก็มีความสำคัญสำหรับการทำความเข้าใจแอปที่สร้างความสับสน เมื่อนักพัฒนาใช้เครื่องมือลดขนาดโค้ด เช่น R8 ชื่อคลาสและเมธอดจะถูกแทนที่ด้วยตัวระบุแบบสั้นที่ไม่มีความหมาย ไฟล์การแมปจะบันทึกการแปลชื่อจากต้นฉบับไปเป็นชื่อที่สับสน ซึ่งจำเป็นสำหรับการอ่านรายงานข้อขัดข้อง
รูปแบบการสำรองข้อมูล Android (AB)
ไฟล์ที่มีนามสกุล .ab คือไฟล์สำรองข้อมูล Android ที่สร้างโดย adb backup ประกอบด้วยไฟล์เก็บถาวร tar (เป็นทางเลือกในการบีบอัดและเข้ารหัส) ของไดเร็กทอรีข้อมูลของแอป รูปแบบนี้เลิกใช้แล้วเพื่อสนับสนุนโซลูชันการสำรองข้อมูลบนคลาวด์ แต่เครื่องมือสำรองข้อมูลบางอย่างยังคงใช้อยู่
รูปภาพ IMG และพาร์ติชัน
แม้ว่าจะไม่เกี่ยวข้องกับแอป แต่อิมเมจระบบ Android ก็ใช้หลายรูปแบบที่ควรกล่าวถึง:
- system.img: พาร์ติชันระบบแบบอ่านอย่างเดียวที่มีเฟรมเวิร์ก Android และแอปที่ติดตั้งไว้ล่วงหน้า
- boot.img: ประกอบด้วยเคอร์เนล Linux และ ramdisk เริ่มต้น
- ไดรเวอร์และเฟิร์มแวร์เฉพาะฮาร์ดแวร์ vendor.img:
- super.img: คอนเทนเนอร์พาร์ติชันแบบไดนามิกที่ใช้ในอุปกรณ์สมัยใหม่ (Android 10+)
ตารางเปรียบเทียบรูปแบบ
นี่คือข้อมูลอ้างอิงโดยย่อเมื่อเปรียบเทียบรูปแบบการเผยแพร่แอปหลัก:
- APK: ไฟล์เดียว สามารถติดตั้งได้โดยตรง เป็นสากล (รวมการกำหนดค่าทั้งหมด) ขนาดใหญ่กว่า
- รูปแบบการเผยแพร่ เอเอบี: ไม่สามารถติดตั้งได้โดยตรง ต้องมีการประมวลผลโดย Play Store
- คอนเทนเนอร์ XAPK: (APK + OBB/แยก) ต้องมีการติดตั้งหรือการแตกไฟล์ ซึ่งใช้โดย APKPure
- คอนเทนเนอร์ APK: (APK แยก) รูปแบบ Bundletool ต้องมีการติดตั้งหรือการควบรวมกิจการ
- คอนเทนเนอร์ APKเอ็ม: (แยก APK) รูปแบบ APKMirror ต้องมีตัวติดตั้ง
การเลือกเครื่องมือที่เหมาะสม
เครื่องมือต่างๆ มีความเหมาะสม ขึ้นอยู่กับรูปแบบที่คุณใช้:
- มี XAPK หรือไม่? ใช้ เครื่องมือแปลง XAPK เป็น APK ของเราเพื่อแยก APK ที่ติดตั้งได้
- มีเอเอบีไหม? ใช้ เครื่องมือแปลง AAB เป็น APK ของเราเพื่อสร้าง APK สากล
- มีการแยก APK (APKS) หรือไม่ ใช้ การรวม APKS เป็น APK ของเราเพื่อรวมเข้าด้วยกัน
- ต้องการตรวจสอบ APK หรือไม่? ใช้ เครื่องมือตรวจสอบ APK ของเราเพื่อตรวจสอบลายเซ็น
- ต้องการไฟล์ OBB จาก XAPK หรือไม่? ใช้ เครื่องแยก OBB ของเราเพื่อแตกไฟล์ส่วนขยาย
คุณควรใช้รูปแบบแพ็คเกจ Android ใด
รูปแบบไฟล์ที่หลากหลายของระบบนิเวศของ Android สะท้อนให้เห็นถึงวิวัฒนาการของแพลตฟอร์มตั้งแต่ APK แบบไฟล์เดียวไปจนถึงระบบการนำส่งแบบโมดูลาร์ที่ซับซ้อน แต่ละรูปแบบมีอยู่เพื่อแก้ไขปัญหาเฉพาะ: AAB ลดขนาดการดาวน์โหลด, XAPK ทำให้การแจกจ่ายแอปหลายไฟล์ง่ายขึ้น, OBB จัดการข้อมูลเกมขนาดใหญ่ และ APK แบบแยกช่วยให้สามารถเพิ่มประสิทธิภาพเฉพาะอุปกรณ์ได้
เมื่อคุณเข้าใจรูปแบบเหล่านี้แล้ว คุณสามารถจัดการกับแพ็คเกจ Android ใดๆ ที่คุณพบเจอได้ ไม่ว่าคุณจะโหลดแอพจากแหล่งไซด์ สำรองข้อมูลอุปกรณ์ของคุณ หรือพัฒนาแอพพลิเคชั่นของคุณเอง ประเด็นสำคัญก็คือ รูปแบบเหล่านี้ส่วนใหญ่เป็นคอนเทนเนอร์ที่เก็บไฟล์ APK ในการกำหนดค่าต่างๆ และด้วยเครื่องมือที่เหมาะสม คุณจึงสามารถแยกสิ่งที่คุณต้องการได้ตลอดเวลา