Xóa tất cả các tài nguyên không sử dụng khỏi một dự án Android


386

Tôi muốn xóa tất cả các bố cục, chuỗi, drawable, màu sắc không sử dụng khỏi thư mục res của Android. Có công cụ nào sẽ cung cấp cho tôi danh sách các tệp và tôi có thể xóa khỏi kho lưu trữ và các thành phần trong các tệp cụ thể (ví dụ: các mục nhập chuỗi không sử dụng) không còn được sử dụng không?

Câu trả lời:


734

Bạn có thể dễ dàng tìm kiếm các tài nguyên không sử dụng từ Android Studio. Chỉ cần nhấn CtrlAltShiftivà gõ " tài nguyên không sử dụng " (không có dấu ngoặc kép). Điều đó sẽ thực thi lint. Cách siêu dễ dàng để chạy các lệnh lint (và các thứ khác từ IDE).

HOẶC LÀ

Trong Menu Android Studio > Refactor > Xóa tài nguyên không sử dụng ...

Chọn các tài nguyên bạn muốn loại bỏ. Bạn có thể loại trừ tài nguyên bạn muốn giữ bằng cách nhấp chuột phải vào mục tài nguyên.

Sử dụng Do Refactor để xóa tất cả Tài nguyên cùng một lúc.

Cập nhật: sử dụng OptionShifticho mac


55
cmd + Alt + Shift cho mac
Jesus Dimrix

5
@MikeMilla Nhấp chuột phải vào các tệp bạn muốn xóa và nhấp vào tùy chọn có nội dung "Áp dụng các bản sửa lỗi Lint". Để xóa nhiều tệp trong một lần, chọn chúng.
Saket Jain

28
Hãy lưu ý rằng sử dụng phương pháp này cũng sẽ loại bỏ bất kỳ tài nguyên nào được sử dụng theo chương trình.
Prokash Sarkar

23
Đã phá vỡ toàn bộ dự án của tôi ... Không phải là một bước đi khôn ngoan
egorikem

7
Với AS 3.0, tính năng này sẽ loại bỏ một số tệp bố cục được sử dụng. Tốt hơn nên tạo một bản sao lưu hoặc cam kết git trước khi thử điều này.
StoneLam

99

Kể từ ADT 16, bạn có thể sử dụng Android Lint . Nó thực sự là công cụ tuyệt vời.

Android Lint là một công cụ mới cho ADT 16 (và Công cụ 16) quét các nguồn dự án Android cho các lỗi tiềm ẩn.

Dưới đây là một số ví dụ về các loại lỗi mà nó tìm kiếm:

  • Thiếu bản dịch (và bản dịch chưa sử dụng)
  • Các vấn đề về hiệu suất bố trí (tất cả các vấn đề mà công cụ layoutopt cũ sử dụng để tìm và hơn thế nữa)
  • Tài nguyên chưa sử dụng
  • Kích thước mảng không nhất quán (khi mảng được xác định trong nhiều cấu hình)
  • Các vấn đề về khả năng truy cập và quốc tế hóa (chuỗi mã hóa cứng, thiếu nội dung Mô tả, v.v.)
  • Sự cố biểu tượng (như mật độ bị thiếu, biểu tượng trùng lặp, kích thước sai, v.v.)
  • Các vấn đề về khả năng sử dụng (như không chỉ định loại đầu vào trên trường văn bản)
  • Lỗi biểu hiện và nhiều hơn nữa.

Tuy nhiên, nó có một số vấn đề (không biết là chúng đã được sửa chưa) và nếu bạn muốn xóa hàng trăm tài nguyên được cho là không sử dụng, tôi khuyên bạn nên biên dịch dự án nhiều lần trong khi xóa tài nguyên để chắc chắn rằng Lint đã không loại bỏ một cái gì đó cần thiết


10
Tôi sẽ không phụ thuộc nhiều vào những gì Lint đang đề xuất là tài nguyên không được sử dụng, đặc biệt nếu bạn thực hiện nhiều tra cứu tài nguyên trong mã của mình thay vì trong xml. Lint sẽ trong trường hợp đó tìm thấy rất nhiều tài nguyên không được sử dụng trong khi chúng thực sự là.
MrJre

61
Trong Android Studio, bạn có thể sử dụng Analyze > Inspect Code...để tìm một số thứ, bao gồm cả Tuyên bố và Phương thức không sử dụng .
Joshua Pinter

8
Một ví dụ, nếu bạn muốn sử dụng dòng lệnh:lint --check UnusedResources <project-path>
Espinchi

41
Nhưng làm thế nào để xóa chúng?
Martin Pfeffer

1
Có cách nào để xóa tất cả Extra Translationscùng / tự động không?
rishabhmhjn

41

Vì Hỗ trợ cho ADT trong Eclipse đã kết thúc, chúng tôi phải sử dụng Android Studio.

Trong Android Studio 2.0+ sử dụng Refactor > Remove Unused Resources...

nhập mô tả hình ảnh ở đây


2
Có vẻ như cách này sẽ loại bỏ các tài nguyên được sử dụng theo chương trình
THZ

1
Đừng quên Xem lại trong bước tiếp theo, nếu không, một số tệp đã sử dụng cũng bị xóa.
Karan Sharma

38

Hệ thống xây dựng Gradle cho Android hỗ trợ "thu hẹp tài nguyên": tự động loại bỏ các tài nguyên không được sử dụng, tại thời điểm xây dựng, trong ứng dụng đóng gói. Ngoài việc loại bỏ tài nguyên trong dự án của bạn không thực sự cần thiết trong thời gian chạy, điều này cũng loại bỏ tài nguyên khỏi các thư viện mà bạn phụ thuộc vào nếu ứng dụng của bạn không thực sự cần thiết.

Để kích hoạt tính năng này, hãy thêm dòng shrResource đúng trong tệp lớp của bạn.

   android {
        ...

        buildTypes {
            release {
                minifyEnabled true //Important step
                shrinkResources true
            }
   }
}

Kiểm tra tài liệu chính thức ở đây,

http://tools.android.com/tech-docs/new-build-system/resource-shrinking


2
Thu nhỏ nguồn cần proguard để được kích hoạt. i hv vấn đề cho phép proguard :-(
Tixeon

Thu nhỏ nguồn chỉ được tính đến nếu minifyEnables là đúng minifyEnabled true
Eldhopj

16

Chúng tôi nguồn mở một công cụ loại bỏ tất cả các tài nguyên không sử dụng trong dự án Android của bạn dựa trên đầu ra lint. Nó có thể được tìm thấy ở đây: https://github.com/KeepSafe/android-resource-remover


Làm thế nào tôi sử dụng điều này để loại bỏ tài nguyên không sử dụng khỏi dự án studio android của tôi.
Yamini

15

Cẩn thận nếu bạn đang sử dụng nhiều hương vị khi chạy lint. Lint có thể cung cấp tài nguyên không sử dụng sai tùy thuộc vào hương vị bạn đã chọn.


Làm thế nào để tránh điều này?
NickUnuchek

Cho đến bây giờ, tôi vẫn chưa tìm ra cách làm. Ngoại trừ chạy lint cho từng hương vị và sau đó đánh dấu các mục không được sử dụng trên cả hai hương vị.
MRodrigues

8

Trong Android Studio 2.0 trở lên trong menu, chọn Refactor -> nhấp vào Xóa tài nguyên không sử dụng ...

(hoặc là)

phím tắt cũng có sẵn

Nhấn Ctlr + Alt + Shift + i một hộp thoại sẽ xuất hiện, sau đó nhập không sử dụng , bạn sẽ tìm thấy số tùy chọn chọn và xóa tài nguyên không sử dụng


7

Trong Studio Android,

Phân tích -> Chạy Kiểm tra theo Tên

(Phím tắt cho Mac shift + lệnh + tùy chọn + i, Ctrl + Shift + A trên Windows / Linux).

Và nhập "tài nguyên không sử dụng".

Bằng cách này, bạn có thể loại bỏ các tài nguyên không sử dụng, các biến, ký hiệu, bản địa hóa, thư viện ..v.v.

Chọn kiểm tra mong muốn từ danh sách, sau đó chọn phạm vi kiểm tra -> OK nhập mô tả hình ảnh ở đây


6

Chú ý các nhà phát triển Android Wear : "Xóa tài nguyên không sử dụng" sẽ xóa tệp xml nơi bạn khai báo tên khả năng (res / value / wear.xml) và điện thoại sẽ không thể kết nối với đồng hồ. Tôi đã dành hàng giờ cố gắng để tìm ra lỗi này trong ứng dụng của mình.


Và nó cũng loại bỏ các biểu tượng mipmap tròn, ví dụ.
artem

Chính xác. Nói chung, 'Không nên sử dụng' Tài nguyên không sử dụng 'vì nó có thể tạo ra nhiều lỗi không thể tìm thấy.
steliosf

4

Để kiểm tra chuỗi tệp.

Thật dễ dàng (ít nhất là trong phiên bản Eclipse của tôi)

Trong Eclipse cho Android (Tôi có phiên bản v22.6.2-1085508)

  • Nhấp chuột trái vào tên dự án trong "Gói thám hiểm"
  • Chọn "Công cụ Android".
  • Chọn "Chạy Lint: Kiểm tra các lỗi phổ biến".

Bây giờ khi bạn mở String.xml, bạn sẽ thấy chuỗi không sử dụng được tô sáng.

Bạn có thể khắc phục các vấn đề tiềm năng khác.


+1 giải pháp tốt đẹp, anh bạn. Nó cũng cho phép chạy lint cho các kiểm tra được chọn - chính xác là những gì tôi cần .... (ps gần giống với Android Studio: nhấp chuột phải vào Project Explorer, chọn Phân tích , chọn Kiểm tra mã hoặc Chạy kiểm tra theo tên ): D
Trinimon

Điều này không giúp ích nhiều trong việc loại bỏ những chuỗi không sử dụng. Bạn có đề nghị loại bỏ chúng bằng tay như trước?
Stan

"Lint" thực sự là một cách tuyệt vời để "dọn dẹp dự án của bạn". Bạn vẫn phải xóa chúng bằng tay, nhưng chúng được tô sáng và ngay lập tức bạn thấy rằng chúng không được sử dụng. Đó là một vài phút làm việc cho một dự án kích thước trung bình. :)
Gabriel Klein

3

Có thể Tài nguyên không sử dụng Andround hữu ích là một ứng dụng Java sẽ quét dự án của bạn để tìm tài nguyên không sử dụng. Các tài nguyên không được sử dụng không cần chiếm không gian, tăng thời gian xây dựng và làm lộn xộn danh sách tự động hoàn thành của IDE.

Để sử dụng nó, đảm bảo thư mục làm việc của bạn là gốc của dự án Android của bạn và chạy:

java -jar AndroidUnuseResource.jar

https://code.google.com.vn/p/android-unuse-resours/


1
bất cứ nơi nào tôi đặt nó cứ nói rằng đó không phải là gốc dự án chính xác
kingston

2

Khi chúng tôi xác định thu hẹp tài nguyên đúng thời gian đó, chúng tôi cũng có thể xác định tài nguyên nào chúng tôi muốn giữ và tôi không thêm tệp xml trong thư mục res / raw có tên keep.xml

trước khi tiếp tục tạo một công cụ xây dựng và kiểm tra apk có chữ ký duy nhất sẽ hiển thị drawable-xhdpi-v4 có messenger_button_send_round_shadow.png mà tôi muốn xóa cho bài kiểm tra này

<?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_*"  />

bằng cách thực hiện messenger_ * tất cả các tệp bắt đầu từ trình nhắn tin tên trong thư mục có thể vẽ sẽ bị xóa hoặc theo cách khác là tôi đã xác định tệp cụ thể sẽ bị xóa

để bằng cách đó bạn có thể tự xóa các tệp khỏi thư viện, bạn cũng có thể xóa bố cục theo @ layout / tên bố cục nếu có thể vẽ được sử dụng bởi layout và vì vậy ....


1

Có câu trả lời thực sự xuất sắc ở đây gợi ý các công cụ tốt

Nhưng nếu bạn đang có ý định xóa png-drawables (hoặc các tệp hình ảnh khác ), bạn cũng nên xem xét chuyển tất cả các thư mục xxxx có thể vẽ ra khỏi dự án của bạn vào một thư mục tạm thời, sau đó thực hiện xây dựng lại tất cả và xem xét bản dựng danh sách tin nhắn sẽ cho bạn biết những gì đang thiếu.

Điều này có thể đặc biệt hữu ích nếu bạn muốn có cái nhìn tổng quan về tài nguyên nào bạn đang sử dụng hiệu quả và có thể thay thế chúng bằng phông chữ biểu tượng hoặc tài nguyên svg, có thể với sự trợ giúp của thư viện Biểu tượng Android .


Điều này tốn thời gian, nhưng tôi đồng ý rằng đây cũng là một giải pháp. Tôi đang làm điều này ngay bây giờ
Dika

0

Trình xem tài sản Android được thiết kế để giúp kiểm tra trực quan đồ họa được đóng gói (dưới dạng có thể rút được) trong .apk của bạn (bạn cũng có thể tải lên tệp zip của thư mục res nếu muốn):

http://www.cellebellum.net/AndroidAssetsViewer/

Vì vậy, để loại bỏ các tài nguyên không sử dụng, điều này có thể hoạt động tốt cùng với các kiểm tra Lint để giúp đảm bảo mọi thứ nên có. Nó cũng giúp bạn xác định một vài vấn đề tiềm ẩn khác với đồ rút của bạn: xô sai, đồ họa sai, v.v.


0

Sau khi bạn chạy Lint trong Android Studio và tìm thấy tất cả các tài nguyên không sử dụng, bạn có thể nhấp vào một trong số chúng từ tab Kiểm tra. Nó cung cấp một số chi tiết về vấn đề này và một vài lựa chọn để khắc phục nó. Một trong số đó là Xóa tất cả các tài nguyên không sử dụng. Chọn tùy chọn đó sẽ xóa tất cả các tài nguyên không sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.