ฉันต้องการลบเลย์เอาต์สตริง drawable สีและอื่น ๆ ที่ไม่ได้ใช้ออกจากไดเรกทอรี res Android ของฉัน มีเครื่องมือใดบ้างที่จะให้รายชื่อไฟล์แก่ฉันและฉันสามารถลบออกจากที่เก็บและองค์ประกอบภายในไฟล์เฉพาะ (เช่นรายการสตริงที่ไม่ได้ใช้) ที่ไม่ได้ใช้อีกต่อไป?
ฉันต้องการลบเลย์เอาต์สตริง drawable สีและอื่น ๆ ที่ไม่ได้ใช้ออกจากไดเรกทอรี res Android ของฉัน มีเครื่องมือใดบ้างที่จะให้รายชื่อไฟล์แก่ฉันและฉันสามารถลบออกจากที่เก็บและองค์ประกอบภายในไฟล์เฉพาะ (เช่นรายการสตริงที่ไม่ได้ใช้) ที่ไม่ได้ใช้อีกต่อไป?
คำตอบ:
คุณสามารถค้นหาทรัพยากรที่ไม่ได้ใช้จาก Android Studio ได้อย่างง่ายดาย เพียงกดCtrlAltShiftiและพิมพ์ " ทรัพยากรที่ไม่ได้ใช้ " (ไม่มีเครื่องหมายคำพูด) ที่จะรันผ้าสำลี วิธีที่ง่ายสุดในการรันคำสั่ง lint (และสิ่งอื่น ๆ จาก IDE)
หรือ
ในเมนู Android Studio > Refactor > ลบทรัพยากรที่ไม่ได้ใช้ ...
เลือกทรัพยากรที่คุณต้องการลบ คุณสามารถยกเว้นทรัพยากรที่คุณต้องการเก็บไว้ได้โดยคลิกขวาที่รายการทรัพยากร
ใช้Do Refactorเพื่อลบทรัพยากรทั้งหมดในครั้งเดียว
อัปเดต:ใช้⌘OptionShiftiสำหรับ mac
ตั้งแต่ ADT 16 คุณสามารถใช้Android ผ้าสำลี มันเป็นเครื่องมือที่น่าทึ่งจริงๆ
Android Lint เป็นเครื่องมือใหม่สำหรับ ADT 16 (และเครื่องมือ 16) ซึ่งจะสแกนแหล่งที่มาของโครงการ Android เพื่อหาจุดบกพร่องที่อาจเกิดขึ้น
นี่คือตัวอย่างของข้อผิดพลาดประเภทที่ค้นหา:
- การแปลที่หายไป (และการแปลที่ไม่ได้ใช้)
- ปัญหาประสิทธิภาพการทำงานของเค้าโครง (ทุกปัญหาเกี่ยวกับเครื่องมือ layoutopt เก่าที่ใช้ในการค้นหาและอื่น ๆ )
- ทรัพยากรที่ไม่ได้ใช้
- ขนาดอาร์เรย์ที่ไม่สอดคล้องกัน (เมื่อมีการกำหนดอาร์เรย์ในหลาย ๆ การกำหนดค่า)
- ปัญหาการเข้าถึงและการทำให้เป็นสากล (สตริงฮาร์ดโค้ดเนื้อหาที่ขาดหายไปคำอธิบาย ฯลฯ )
- ปัญหาไอคอน (เช่นความหนาแน่นหายไปไอคอนซ้ำขนาดผิดพลาด ฯลฯ )
- ปัญหาการใช้งาน (เช่นไม่ระบุประเภทอินพุตในฟิลด์ข้อความ)
- ข้อผิดพลาดอย่างชัดแจ้งและอื่น ๆ อีกมากมาย
อย่างไรก็ตามมีปัญหาบางอย่าง (ไม่ทราบว่าแก้ไขแล้ว) และหากคุณต้องการลบทรัพยากรที่ไม่ได้ใช้ที่คาดคะเนหลายร้อยรายการฉันแนะนำให้รวบรวมโครงการด้วยตนเองหลายครั้งในระหว่างการนำทรัพยากรออกเพื่อให้แน่ใจว่าผ้าสำลีไม่ได้ ลบบางสิ่งที่จำเป็น
Analyze > Inspect Code...
เพื่อหาจำนวนของสิ่งรวมทั้งที่ไม่ได้ใช้การประกาศและวิธีการ
lint --check UnusedResources <project-path>
Extra Translations
เข้าด้วยกัน / โดยอัตโนมัติหรือไม่
เนื่องจากการสนับสนุน ADT ใน Eclipse สิ้นสุดลงเราจึงต้องใช้ Android Studio
ในการใช้ Android Studio 2.0+ Refactor > Remove Unused Resources...
ระบบการสร้าง Gradle สำหรับ Android รองรับ "การลดขนาดทรัพยากร": การลบทรัพยากรที่ไม่ได้ใช้งานในเวลาบิลด์โดยอัตโนมัติในแอพที่จัดทำ นอกเหนือจากการลบทรัพยากรในโครงการของคุณที่ไม่จำเป็นต้องใช้จริงตอนรันไทม์นี่ยังเป็นการเอาทรัพยากรออกจากไลบรารีที่คุณต้องใช้หากแอพพลิเคชันของคุณไม่จำเป็นต้องใช้จริง
หากต้องการเปิดใช้งานให้เพิ่ม line shrinkResources จริงในไฟล์ gradle ของคุณ
android {
...
buildTypes {
release {
minifyEnabled true //Important step
shrinkResources true
}
}
}
ตรวจสอบเอกสารอย่างเป็นทางการที่นี่
http://tools.android.com/tech-docs/new-build-system/resource-shrinking
minifyEnabled true
เราเปิดโอเพนซอร์สเครื่องมือที่จะลบทรัพยากรที่ไม่ได้ใช้ทั้งหมดในโครงการ Android ของคุณตามเอาท์พุทผ้าสำลี สามารถพบได้ที่นี่: https://github.com/KeepSafe/android-resource-remover
ระวังถ้าคุณใช้หลายรสชาติเมื่อใช้ผ้าสำลี ผ้าสำลีอาจให้ทรัพยากรที่ไม่ได้ใช้เป็นเท็จขึ้นอยู่กับรสชาติที่คุณเลือก
ใน Android Studio 2.0 และสูงกว่าในเมนูเลือก Refactor -> คลิกที่ลบทรัพยากรที่ไม่ได้ใช้ ...
(หรือ)
ทางลัดยังมีอยู่
กด Ctlr + Alt + Shift + i หนึ่งกล่องโต้ตอบจะปรากฏขึ้นจากนั้นพิมพ์ไม่ได้ใช้คุณจะพบจำนวนตัวเลือกที่เลือกและลบทรัพยากรที่ไม่ได้ใช้
ใน Android Studio
วิเคราะห์ -> เรียกใช้การตรวจสอบตามชื่อ
(ทางลัดสำหรับ Mac shift + command + ตัวเลือก + i, Ctrl + Shift + A บน Windows / Linux)
และพิมพ์ 'ทรัพยากรที่ไม่ได้ใช้'
วิธีนี้คุณสามารถลบทรัพยากรตัวแปรสัญลักษณ์การแปลภาษาไลบรารีที่ไม่ได้ใช้ ฯลฯ ได้
เลือกการตรวจสอบที่ต้องการจากรายการจากนั้นเลือกขอบเขตการตรวจสอบ -> ตกลง
ข้อควรระวังนักพัฒนา Android Wear : "ลบทรัพยากรที่ไม่ได้ใช้" จะลบไฟล์ xml ที่คุณประกาศชื่อความสามารถ (res / values / wear.xml) และโทรศัพท์จะไม่สามารถเชื่อมต่อกับนาฬิกาได้ ฉันใช้เวลาหลายชั่วโมงในการหาจุดบกพร่องนี้ในแอพของฉัน
เพื่อตรวจสอบ string.xml
ง่ายมาก (อย่างน้อยใน Eclipse รุ่นของฉัน)
ใน Eclipse สำหรับ Android (ฉันมีรุ่น v22.6.2-1085508)
ตอนนี้เมื่อคุณเปิด strings.xml คุณจะเห็นว่ามีการเน้นสตริงที่ไม่ได้ใช้
คุณสามารถแก้ไขปัญหาที่อาจเกิดขึ้นอื่น ๆ
อาจเป็นประโยชน์ Andround Unused Resources เป็นแอปพลิเคชัน Java ที่จะสแกนโครงการของคุณสำหรับทรัพยากรที่ไม่ได้ใช้ ทรัพยากรที่ไม่ได้ใช้จำเป็นต้องใช้พื้นที่เพิ่มเวลาในการสร้างและถ่วงรายการเติมข้อความอัตโนมัติของ IDE
หากต้องการใช้ให้แน่ใจว่าไดเรกทอรีทำงานของคุณเป็นรากของโครงการ Android ของคุณและเรียกใช้:
java -jar AndroidUnusedResources.jar
เมื่อเรากำหนดทรัพยากรหดตัวจริงเวลานั้นเรายังสามารถกำหนดทรัพยากรที่เราต้องการเก็บไว้และสิ่งที่ฉันไม่ได้เพิ่มไฟล์ xml ในโฟลเดอร์ res / raw ที่ชื่อว่า keep.xml
ก่อนที่จะไปสร้างบิลด์เดียวและตรวจสอบในเครื่องมือวิเคราะห์ apk ซึ่งจะแสดง drawable-xhdpi-v4 มี messenger_button_send_round_shadow.png ซึ่งฉันต้องการลบสำหรับการทดสอบนี้
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict"
tools:discard="@drawable/com_facebook_button_icon_blue.png,
@drawable/com_facebook_button_icon_white.png,
@drawable/com_facebook_button_like_icon_selected.png,
@drawable/messenger_button_send_round_shadow.png,
@drawable/messenger_*" />
โดยทำ messenger_ * ไฟล์ทั้งหมดที่เริ่มต้นจากชื่อ messenger ในโฟลเดอร์ drawable จะถูกลบออกหรือวิธีอื่น ๆ คือฉันได้กำหนดไฟล์เฉพาะที่จะลบ
เพื่อให้คุณสามารถลบไฟล์ออกจากไลบรารีได้ด้วยตนเองคุณยังสามารถลบเลย์เอาต์โดย @ layout / layout layout ได้หากมีการใช้ drawable โดย layout และอื่น ๆ ....
มีคำตอบที่ยอดเยี่ยมจริง ๆ ในที่นี้แนะนำเครื่องมือที่ดี
แต่ถ้าคุณต้องการลบ png-drawables (หรือไฟล์รูปภาพอื่น ๆ) คุณควรพิจารณาย้ายโฟลเดอร์ drawable-xxxx ทั้งหมดออกจากโครงการของคุณไปยังโฟลเดอร์ชั่วคราวจากนั้นทำการสร้างใหม่ทั้งหมดและดูที่การสร้าง รายการข้อความที่จะบอกคุณว่าคนที่หายไป
สิ่งนี้มีประโยชน์เป็นพิเศษหากคุณต้องการดูภาพรวมของทรัพยากรที่คุณใช้อย่างมีประสิทธิภาพและอาจแทนที่ด้วยไอคอนแบบอักษรหรือทรัพยากร svg ซึ่งอาจเป็นความช่วยเหลือของห้องสมุดAndroid Iconics
Android Assets Viewer ได้รับการออกแบบมาเพื่อช่วยตรวจสอบกราฟิกที่บรรจุ (เป็น drawables) ภายใน. apk ของคุณ (คุณสามารถอัปโหลดไฟล์ zip ของโฟลเดอร์ res ของคุณได้หากต้องการ):
http://www.cellebellum.net/AndroidAssetsViewer/
ดังนั้นสำหรับการเอาทรัพยากรที่ไม่ได้ใช้ออกไปสิ่งนี้อาจใช้ได้ดีกับการตรวจสอบผ้าสำลีเพื่อช่วยให้แน่ใจว่าทุกอย่างที่ควรจะมี นอกจากนี้ยังช่วยให้คุณระบุปัญหาอื่น ๆ ที่อาจเกิดขึ้นกับ drawables ของคุณ: bucket ผิดกราฟิกผิด ฯลฯ
หลังจากที่คุณเรียกใช้ Lint ใน Android Studio และค้นหาทรัพยากรที่ไม่ได้ใช้ทั้งหมดคุณสามารถคลิกที่หนึ่งในนั้นจากแท็บการตรวจสอบ ให้รายละเอียดเกี่ยวกับปัญหาและตัวเลือกไม่กี่อย่างที่จะแก้ไข หนึ่งในนั้นคือลบทรัพยากรที่ไม่ได้ใช้ทั้งหมด การเลือกตัวเลือกนั้นจะเป็นการลบทรัพยากรที่ไม่ได้ใช้ทั้งหมด