เครื่องมือวิเคราะห์ APK เวอร์ชันบรรทัดคำสั่งจะให้ข้อมูลเชิงลึกทันทีเกี่ยวกับ ส่วนประกอบของ APK ของคุณหลังจากกระบวนการสร้างเสร็จสมบูรณ์และช่วยให้คุณ เปรียบเทียบความแตกต่างระหว่าง APK 2 รายการ การใช้เครื่องมือวิเคราะห์ APK จะช่วยลด เวลาที่ใช้ในการแก้ไขข้อบกพร่องเกี่ยวกับไฟล์และทรัพยากร DEX ภายในแอป และ ลดขนาดของ APK ของคุณ
apkanalyzer รวมอยู่ใน
แพ็กเกจเครื่องมือบรรทัดคำสั่ง Android SDK ที่
android_sdk/cmdline-tools/version/bin/apkanalyzer
หรือคุณสามารถเข้าถึงเครื่องมือวิเคราะห์ APK ภายใน
Android Studio ตามที่อธิบายไว้ใน
วิเคราะห์บิลด์ด้วยตัววิเคราะห์ APK
วากยสัมพันธ์
ไวยากรณ์ของ apkanalyzer คือ
apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]
subject คือสิ่งที่คุณต้องการค้นหาและสามารถใช้เป็น APK ทั้งหมด
หรือส่วนหนึ่งของ APK หัวเรื่องอาจเป็นอะไรก็ได้ต่อไปนี้
apk: วิเคราะห์แอตทริบิวต์ของไฟล์ APK เช่น รหัสแอปพลิเคชัน รหัสเวอร์ชัน และชื่อเวอร์ชันfiles: วิเคราะห์ไฟล์ภายในไฟล์ APKmanifest: วิเคราะห์เนื้อหาของไฟล์ Manifest ภายในไฟล์ APKdex: วิเคราะห์ไฟล์ DEX ภายในไฟล์ APKresources: ดูแหล่งข้อมูลเกี่ยวกับข้อความ รูปภาพ และสตริง
verb คือสิ่งที่คุณต้องการรู้เกี่ยวกับหัวข้อนั้นๆ วิชา
คำกริยา และตัวเลือกต่างๆ ซึ่งมีอธิบายไว้ในส่วนต่อไปนี้ซึ่งเกี่ยวกับคำสั่ง
คุณต้องระบุไฟล์ APK ของทุกคำสั่ง เฉพาะ
คำสั่ง apk compare ต้องการให้คุณระบุ APK ที่สอง
คุณย่อตัวเลือกทั้งหมดให้สั้นลงได้ตราบใดที่ตัวเลือกดังกล่าวไม่ชัดเจน ตัวอย่างเช่น
ตัวเลือกส่วนกลาง --human-readable สามารถย่อให้เหลือ
-h
ตัวอย่างต่อไปนี้วิเคราะห์ apk (เรื่อง)
เพื่อรับ file-size (กริยา) แล้วพิมพ์ขนาดไฟล์เป็น
รูปแบบที่มนุษย์อ่านได้ (-h ตัวเลือก):
apkanalyzer -h apk file-size myapk.apk
คำสั่ง
คำอธิบายคำสั่งต่อไปนี้จัดเรียงตามหัวเรื่องและแสดงรายการ ชุดค่าผสมของกริยาและตัวเลือกที่มีสำหรับแต่ละวิชา:
| 
       | 
        คำอธิบาย | 
|---|---|
      apk summary apk-file
     | 
    
      พิมพ์รหัสแอปพลิเคชัน รหัสเวอร์ชัน และชื่อเวอร์ชัน
 ตัวอย่างเอาต์พุต: com.myapp 5 1.1-beta  | 
  
      apk file-size apk-file
     | 
    พิมพ์ขนาดไฟล์ทั้งหมดของ APK | 
      apk download-size apk-file
     | 
    พิมพ์ขนาดการดาวน์โหลดโดยประมาณของ APK | 
      apk features [--not-required] apk-file
     | 
    
     ฟีเจอร์การพิมพ์ที่ APK ที่เรียกใช้
      การกรอง Play Store
       เพิ่มตัวเลือก --not-required
      เพื่อรวมฟีเจอร์ที่ทำเครื่องหมายว่าไม่จำเป็นในเอาต์พุต
ตัวอย่างเอาต์พุต: android.hardware.type.watch
android.hardware.microphone implied:
    requested android.permission.RECORD_AUDIO permission | 
  
      apk compare [options] apk-file
        apk-file2
     | 
    
      เปรียบเทียบขนาดของ apk-file และ
      apk-file2
       คุณใส่ตัวเลือกต่อไปนี้ได้
      
 ตัวอย่างเอาต์พุต (ขนาดเดิม / ขนาดใหม่ / ความแตกต่างของขนาด / เส้นทาง): 39086736 48855615 9768879 / 10678448 11039232 360784 /classes.dex 18968956 18968956 0 /lib/ 110576 110100 -476 /AndroidManifest.xml ...  | 
  
| ดูระบบไฟล์ APK | คำอธิบาย | 
       files list apk-file
     | 
    
      แสดงไฟล์ทั้งหมดใน APK
 ตัวอย่างเอาต์พุต: / /classes2.dex /classes.dex /assets/ /assets/asset.data /AndroidManifest.xml /resources.arsc /res/ ...  | 
  
      files cat --file path apk-file
     | 
    
      พิมพ์เนื้อหาไฟล์ คุณต้องระบุเส้นทางภายใน APK โดยใช้
      ตัวเลือก --file path เช่น --file
      /AndroidManifest.xml
     | 
  
| ดูข้อมูลในไฟล์ Manifest | คำอธิบาย | 
      manifest print apk-file
     | 
    พิมพ์ไฟล์ Manifest ของ APK ในรูปแบบ XML | 
      manifest application-id apk-file
     | 
    พิมพ์ค่ารหัสแอปพลิเคชัน | 
      manifest version-name apk-file
     | 
    พิมพ์ค่าชื่อเวอร์ชัน | 
      manifest version-code apk-file
     | 
    พิมพ์ค่ารหัสเวอร์ชัน | 
      manifest min-sdk apk-file
       | พิมพ์เวอร์ชัน SDK ขั้นต่ำ | 
      manifest target-sdk apk-file
     | 
    พิมพ์เวอร์ชัน SDK เป้าหมาย | 
      manifest permissions apk-file
     | 
    พิมพ์รายการสิทธิ์ | 
      manifest debuggable apk-file
     | 
    พิมพ์ว่าแอปแก้ไขข้อบกพร่องได้หรือไม่ | 
| เข้าถึงข้อมูลไฟล์ DEX | คำอธิบาย | 
      dex list apk-file
     | 
    พิมพ์รายการไฟล์ DEX ใน APK | 
      dex references [--files path] [--files path2]
        apk-file
     | 
    
      พิมพ์จำนวนการอ้างอิงเมธอดในไฟล์ DEX ที่ระบุ
      ค่าเริ่มต้นคือไฟล์ DEX ทั้งหมด เพิ่มตัวเลือก --files ไปยัง
      ให้ระบุไฟล์ที่ต้องการรวมไว้ด้วย
ตัวอย่างเอาต์พุต: classes.dex 59598 classes2.dex 8042  | 
  
   dex packages [option1 option2 ...] apk-file
     | 
    
      พิมพ์แผนผังคลาสจาก DEX ในเอาต์พุต P
      C, M และ F หมายถึงแพ็กเกจ
      คลาส เมธอด และฟิลด์ตามลำดับ และ x
      k, r และ d ระบุว่าลบ เก็บไว้
      โหนดที่อ้างอิงและกำหนดโหนดตามลำดับ
เพิ่มตัวเลือกต่อไปนี้เพื่อปรับแต่งผลลัพธ์ 
 ตัวอย่างเอาต์พุต (ประเภท/สถานะ/วิธีการที่กำหนดโดย/เมธอดที่มีการอ้างอิง ขนาด/ไบต์/ชื่อ): P d 1 1 85 g P d 1 1 85 g.a C d 1 1 85 g.a.a M d 1 1 45 g.a.a java.lang.Object get() C r 0 1 40 byte[] M r 0 1 40 byte[] java.lang.Object clone()  | 
   dex code --class class [--method method]
   | 
  
  พิมพ์ไบต์โค้ดของคลาสหรือเมธอดในรูปแบบ smali ชื่อชั้นเรียน
  แล้วพิมพ์ชื่อคลาสที่มีคุณสมบัติครบถ้วนเพื่อคลายการคอมไพล์ เพิ่ม
  --method เพื่อระบุวิธีการถอดรหัส
รูปแบบ
  สำหรับวิธีการแยกคอมไพล์คือ   | 
| ดูทรัพยากรที่เก็บไว้ใน res/ และ resource.arsc | คำอธิบาย | 
    resources packages
   | 
  พิมพ์รายการแพ็กเกจที่กำหนดไว้ในตารางทรัพยากร | 
   resources configs --type type [--package package] apk-file
   | 
  
    พิมพ์รายการการกำหนดค่าสำหรับ type ที่ระบุ
    type เป็นประเภททรัพยากร เช่น string
    รวม --package
    หากคุณต้องการระบุชื่อแพ็กเกจของตารางทรัพยากร
    ระบบจะใช้แพ็กเกจแรกที่กำหนดไว้
   | 
  
  resources value --config config --name name
 --type type [--package package] apk-file
   | 
  
  พิมพ์ค่าของทรัพยากรที่ระบุโดย config
  name และ type 
  ตัวเลือก type คือประเภทของทรัพยากร เช่น
  string
รวม   | 
  
    resources names --config config --type type
     [--package package] apk-file
   | 
  
    พิมพ์รายการชื่อทรัพยากรสำหรับการกำหนดค่าและประเภท 
    ตัวเลือก type คือประเภทของทรัพยากร เช่น
    string
    รวม --package
    หากคุณต้องการระบุชื่อแพ็กเกจของตารางทรัพยากร
    ระบบจะใช้แพ็กเกจแรกที่กำหนดไว้
   | 
  
    resources xml --file path apk-file
       | 
      
      พิมพ์ไฟล์ XML ไบนารีที่มนุษย์อ่านได้
      ใส่
      file เพื่อระบุเส้นทางไปยังไฟล์
   |