apkanalyzer

เครื่องมือวิเคราะห์ 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: วิเคราะห์ไฟล์ภายในไฟล์ APK
  • manifest: วิเคราะห์เนื้อหาของไฟล์ Manifest ภายในไฟล์ APK
  • dex: วิเคราะห์ไฟล์ DEX ภายในไฟล์ APK
  • resources: ดูแหล่งข้อมูลเกี่ยวกับข้อความ รูปภาพ และสตริง

verb คือสิ่งที่คุณต้องการรู้เกี่ยวกับหัวข้อนั้นๆ วิชา คำกริยา และตัวเลือกต่างๆ ซึ่งมีอธิบายไว้ในส่วนต่อไปนี้ซึ่งเกี่ยวกับคำสั่ง

คุณต้องระบุไฟล์ APK ของทุกคำสั่ง เฉพาะ คำสั่ง apk compare ต้องการให้คุณระบุ APK ที่สอง

คุณย่อตัวเลือกทั้งหมดให้สั้นลงได้ตราบใดที่ตัวเลือกดังกล่าวไม่ชัดเจน ตัวอย่างเช่น ตัวเลือกส่วนกลาง --human-readable สามารถย่อให้เหลือ -h

ตัวอย่างต่อไปนี้วิเคราะห์ apk (เรื่อง) เพื่อรับ file-size (กริยา) แล้วพิมพ์ขนาดไฟล์เป็น รูปแบบที่มนุษย์อ่านได้ (-h ตัวเลือก):

apkanalyzer -h apk file-size myapk.apk

คำสั่ง

คำอธิบายคำสั่งต่อไปนี้จัดเรียงตามหัวเรื่องและแสดงรายการ ชุดค่าผสมของกริยาและตัวเลือกที่มีสำหรับแต่ละวิชา:

ดูแอตทริบิวต์ของไฟล์ 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 คุณใส่ตัวเลือกต่อไปนี้ได้
  • --different-only: พิมพ์ไดเรกทอรีและไฟล์ด้วย แตกต่างกัน
  • --files-only: ไม่พิมพ์รายการไดเรกทอรี
  • --patch-size: แสดงค่าประมาณของแพตช์แต่ละไฟล์ แทนที่จะเป็นความแตกต่างพื้นฐาน

ตัวอย่างเอาต์พุต (ขนาดเดิม / ขนาดใหม่ / ความแตกต่างของขนาด / เส้นทาง):

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 ระบุว่าลบ เก็บไว้ โหนดที่อ้างอิงและกำหนดโหนดตามลำดับ

เพิ่มตัวเลือกต่อไปนี้เพื่อปรับแต่งผลลัพธ์

  • --defined-only: รวมเฉพาะคลาสที่ระบุไว้ใน APK ในเอาต์พุต
  • --files: ระบุชื่อไฟล์ DEX ที่จะรวม ค่าเริ่มต้น: ไฟล์ DEX ทั้งหมด
  • --proguard-folder file: ระบุโฟลเดอร์เอาต์พุต Proguard เพื่อค้นหาการจับคู่
  • --proguard-mappings file: ระบุไฟล์การแมป Proguard
  • --proguard-seeds file: ระบุไฟล์ Seeds ของ Proguard
  • --proguard-usages file: ระบุไฟล์การใช้งาน Proguard
  • --show-removed: แสดงชั้นเรียนและสมาชิกที่ Proguard นำออก

ตัวอย่างเอาต์พุต (ประเภท/สถานะ/วิธีการที่กำหนดโดย/เมธอดที่มีการอ้างอิง ขนาด/ไบต์/ชื่อ):

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 เพื่อระบุวิธีการถอดรหัส

รูปแบบ สำหรับวิธีการแยกคอมไพล์คือ name(params)returnType เป็นต้น someMethod(Ljava/lang/String;I)V

ดูทรัพยากรที่เก็บไว้ใน 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

รวม --package หากคุณต้องการระบุชื่อแพ็กเกจของตารางทรัพยากร ระบบจะใช้แพ็กเกจแรกที่กำหนดไว้

resources names --config config --type type [--package package] apk-file พิมพ์รายการชื่อทรัพยากรสำหรับการกำหนดค่าและประเภท ตัวเลือก type คือประเภทของทรัพยากร เช่น string รวม --package หากคุณต้องการระบุชื่อแพ็กเกจของตารางทรัพยากร ระบบจะใช้แพ็กเกจแรกที่กำหนดไว้
resources xml --file path apk-file พิมพ์ไฟล์ XML ไบนารีที่มนุษย์อ่านได้ ใส่ file เพื่อระบุเส้นทางไปยังไฟล์