안드로이드 프로젝트에서 사용하지 않는 모든 리소스 제거


386

Android res 디렉토리에서 사용하지 않는 모든 레이아웃, 문자열, 드로어 블, 색상 등을 제거하고 싶습니다. 파일 목록을 제공하고 더 이상 사용되지 않는 특정 파일 (예 : 사용하지 않는 문자열 항목) 내의 저장소 및 요소에서 제거 할 수있는 도구가 있습니까?

답변:


734

Android Studio에서 사용하지 않는 리소스를 쉽게 검색 할 수 있습니다. 그냥 눌러 CtrlAltShifti입력 " 사용되지 않는 자원을 (따옴표없이)". 보푸라기가 실행됩니다. 린트 명령 (및 IDE의 다른 항목)을 실행하는 매우 쉬운 방법입니다.

또는

에서 안드로이드 스튜디오 메뉴 > 리팩터링 > 사용하지 않는 자원을 제거 ...

제거 할 리소스를 선택하십시오. 리소스 항목을 마우스 오른쪽 버튼으로 클릭하여 유지하려는 리소스를 제외 할 수 있습니다.

리팩토링 수행 을 사용 하여 모든 자원을 한 번에 제거하십시오.

업데이트 : 사용 OptionShiftiMac 용


55
Mac 용 cmd + Alt + Shift
Jesus Dimrix

5
@MikeMilla 삭제하려는 파일을 마우스 오른쪽 버튼으로 클릭하고 "린트 수정 적용"옵션을 클릭하십시오. 한 번에 여러 파일을 삭제하려면 해당 파일을 선택하십시오.
Saket Jain

28
이 방법을 사용하면 프로그래밍 방식으로 사용 된 모든 리소스도 제거됩니다.
Prokash Sarkar

23
내 전체 프로젝트를 파산 ... 현명한 움직임이 아닙니다
egorikem

7
AS 3.0에서이 기능은 사용 된 일부 레이아웃 파일을 제거합니다. 시도하기 전에 백업 또는 git commit을 만드는 것이 좋습니다.
StoneLam

99

ADT 16부터 Android Lint를 사용할 수 있습니다 . 정말 놀라운 도구입니다.

Android Lint는 ADT 16 (및 Tools 16) 용 새로운 도구로, 잠재적 인 버그가 있는지 Android 프로젝트 소스를 스캔합니다.

찾는 오류 유형의 예는 다음과 같습니다.

  • 누락 된 번역 (및 사용되지 않은 번역)
  • 레이아웃 성능 문제 (이전의 layoutopt 도구에서 찾은 모든 문제 등)
  • 사용하지 않은 자원
  • 일관되지 않은 배열 크기 (어레이가 여러 구성으로 정의 된 경우)
  • 접근성 및 국제화 문제 (하드 코딩 된 문자열, 누락 된 내용 설명 등)
  • 아이콘 문제 (밀도 누락, 중복 아이콘, 잘못된 크기 등)
  • 사용성 문제 (텍스트 필드에 입력 유형을 지정하지 않는 등)
  • 매니페스트 오류 등

그러나 문제가 있습니다 (이미 수정되었는지 알 수 없음). 수백 개의 미사용 리소스를 삭제하려는 경우 리소스 제거 중에 프로젝트를 수동으로 여러 번 컴파일하여 Lint 가하지 않았는지 확인하는 것이 좋습니다 필요한 것을 제거하십시오.


10
특히 Lint가 XML 대신 코드에서 많은 리소스 조회를 수행하는 경우 Lint가 사용되지 않는 리소스로 제안하는 것에 크게 의존하지는 않습니다. 이 경우 Lint는 실제로 사용되는 동안 많은 리소스를 사용하지 않습니다.
MrJre

61
Android Studio에서는 사용 하지 않은 선언 및 방법을Analyze > Inspect Code... 포함하여 여러 가지를 찾을 수 있습니다 .
Joshua Pinter

8
예를 들어, 명령 행을 사용하려는 경우 :lint --check UnusedResources <project-path>
espinchi

41
그러나 어떻게 삭제합니까?
Martin Pfeffer 1

1
Extra Translations함께 / 자동으로 모든 것을 삭제하는 방법이 있습니까?
rishabhmhjn

41

Eclipse에서 ADT 지원이 종료되었으므로 Android Studio를 사용해야합니다.

Android Studio 2.0 이상에서 Refactor > Remove Unused Resources...

여기에 이미지 설명을 입력하십시오


2
이 방법은 프로그래밍 방식으로 사용되는 자원을 제거하는 것처럼 보입니다
THZ

1
다음 단계에서 검토하는 것을 잊지 마십시오. 그렇지 않으면 일부 사용 된 파일도 삭제됩니다.
Karan Sharma

38

Android 용 Gradle 빌드 시스템은 "리소스 축소"를 지원합니다. 빌드시 패키지 앱에서 사용하지 않는 리소스를 자동으로 제거합니다. 프로젝트에서 실제로 런타임에 필요하지 않은 자원을 제거하는 것 외에도 응용 프로그램에서 실제로 필요하지 않은 경우 의존하는 라이브러리에서 자원을 제거합니다.

이를 가능하게하려면 gradle 파일에 shrinkResources true 행을 추가하십시오.

   android {
        ...

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

공식 문서를 확인하십시오.

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


2
shrinkResources를 활성화하려면 proguard가 필요합니다. 나는 보호를 활성화하는 데 문제가 있습니다 :-(
Tixeon

shrinkResources는 minifyEnabled가 true 인 경우에만 고려됩니다 minifyEnabled true
Eldhopj

16

우리는 린트 출력을 기반으로 안드로이드 프로젝트에서 사용되지 않은 모든 리소스를 제거하는 도구를 오픈 소스로 제공합니다. https://github.com/KeepSafe/android-resource-remover 에서 찾을 수 있습니다.


내 안드로이드 스튜디오 프로젝트에서 사용하지 않는 리소스를 제거하기 위해 이것을 사용하는 방법.
Yamini

15

보푸라기를 실행할 때 여러 가지 맛을 사용하는 경우주의하십시오. 린트는 선택한 맛에 따라 사용되지 않은 잘못된 자원을 제공 할 수 있습니다.


이것을 피하는 방법?
NickUnuchek

지금까지 나는 그것을하는 방법을 찾지 못했습니다. 각 맛에 보풀을 흘린 다음 두 가지 맛에 사용되지 않은 항목을 표시하는 것을 제외하고.
MRodrigues

8

Android Studio 2.0 이상에서 메뉴의 Refactor-> 사용하지 않은 리소스 제거 ...를 클릭하십시오.

(또는)

바로 가기 가능

보도 CTLR + Alt + Shift를 내가 + 하나 개의 대화 상자 apper 입력 한 다음 것이다 되지 않은 , 당신은 옵션의 수를 선택를 찾아 사용되지 않는 자원을 제거합니다


7

Android Studio에서

분석-> 이름으로 검사 실행

(Mac shift + command + option + i의 경우 Windows / Linux의 경우 Ctrl + Shift + A 단축키)

'사용하지 않은 리소스'를 입력하십시오.

이 방법을 사용하면 사용하지 않는 리소스, 변수, 기호, 지역화, 라이브러리 등을 제거 할 수 있습니다.

목록에서 원하는 검사를 선택한 다음 검사 범위-> 확인을 선택하십시오. 여기에 이미지 설명을 입력하십시오


6

Android Wear 개발자주의 : "사용하지 않은 리소스 제거"는 기능 이름 (res / values ​​/ wear.xml)을 선언하는 xml 파일을 삭제하며 휴대 전화를 시계에 연결할 수 없습니다. 내 앱 에서이 버그를 파악하기 위해 몇 시간을 보냈습니다.


또한 라운드 밉맵 아이콘을 제거합니다.
artem

옳은. 일반적으로 '사용하지 않은 리소스 제거'는 추적 할 수없는 많은 버그를 생성 할 수 있으므로 전혀 권장하지 않습니다.
steliosf

4

string.xml을 확인하려면

쉽습니다 (적어도 내 버전의 Eclipse에서는)

Android 용 Eclipse에서 (버전 v22.6.2-1085508이 있습니다)

  • "패키지 탐색기"에서 프로젝트 이름을 마우스 왼쪽 버튼으로 클릭하십시오.
  • "Android 도구"를 선택하십시오.
  • "린트 실행 : 일반적인 오류 확인"을 선택하십시오.

이제 strings.xml을 열면 사용되지 않는 문자열이 강조 표시됩니다.

다른 잠재적 인 문제를 해결할 수 있습니다.


+1 좋은 해결책, 친구. (: 프로젝트 탐색기에서 마우스 오른쪽 버튼으로 클릭은 선택 안드로이드 스튜디오와 PS가 거의 같은 .... 내가 필요 정확히 - 그것은뿐만 아니라 선택된 검사에 보풀을 실행할 수 있습니다 분석 , 선택 코드 검사 또는 이름으로 실행 검사 ) : D를
Trinimon을

이것은 사용되지 않는 문자열을 제거하는 데별로 도움이되지 않습니다. 이전과 같이 수동으로 제거 하시겠습니까?
Stan

"Lint"는 실제로 "프로젝트를 정리하는"훌륭한 방법입니다. 여전히 수동으로 제거해야하지만 강조 표시되고 사용되지 않는 것을 즉시 알 수 있습니다. 중간 규모의 프로젝트에 몇 분이 걸립니다. :)
Gabriel Klein

3

유용한 Andround Unused Resources는 프로젝트에서 사용하지 않는 리소스를 스캔하는 Java 응용 프로그램입니다. 사용하지 않는 리소스는 불필요하게 공간을 차지하고 빌드 시간을 늘리며 IDE의 자동 완성 목록을 복잡하게 만듭니다.

이를 사용하려면 작업 디렉토리가 Android 프로젝트의 루트인지 확인하고 다음을 실행하십시오.

java -jar AndroidUnusedResources.jar

https://code.google.com/p/android-unused-resources/


1
내가 넣어 이제까지는 올바른 프로젝트 루트가 아닌 말을 계속 곳
킹스턴

2

리소스 축소를 정의 할 때 해당 리소스를 유지하고 유지하고 싶은 리소스를 정의 할 수 있습니다. 그리고 keep.xml이라는 res / raw 폴더에 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_ *를 수행하면 drawable 폴더의 이름 메신저에서 시작하는 모든 파일이 제거되거나 다른 방법으로 제거 될 특정 파일을 정의합니다

라이브러리에서 파일을 제거 할 수있는 방식으로 드로어 블이 레이아웃에 의해 사용 된 경우 @ layout / layout 이름으로 레이아웃을 제거 할 수도 있습니다.


1

여기에 훌륭한 도구를 제안하는 훌륭한 답변이 있습니다.

그러나 png 드로어 블 (또는 다른 이미지 파일 ) 을 제거하려는 경우 프로젝트에서 모든 drawable-xxxx 폴더를 임시 폴더로 이동 한 다음 모두 다시 빌드하고 빌드를 살펴보십시오. 누락 된 메시지를 알려주는 메시지 목록.

이 기능은 효과적으로 사용중인 리소스에 대한 개요를 얻고 아이콘 글꼴 또는 svg 리소스 ( Android Iconics 라이브러리 의 도움으로)로 대체하려는 경우에 특히 유용 할 수 있습니다 .


이것은 시간이 걸리지 만 이것이 해결책이라는 데 동의합니다. 나는 이것을 지금하고있다
Dika

0

Android Assets Viewer는 .apk 내에 압축 된 그래픽을 드로어 블로 시각적으로 검사 할 수 있도록 설계되었습니다 (원하는 경우 res 폴더의 zip 파일 만 업로드 할 수도 있음).

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

따라서 사용하지 않는 리소스를 제거하기 위해 Lint 검사와 함께 작동하여 필요한 모든 것이 있는지 확인하십시오. 또한 드로어 블과 관련된 몇 가지 잠재적 인 문제 (잘못된 버킷, 잘못된 그래픽 등)를 식별하는 데 도움이됩니다.


0

Android Studio에서 Lint를 실행하고 사용되지 않은 모든 리소스를 찾은 후 검사 탭에서 해당 리소스 중 하나를 클릭 할 수 있습니다. 문제에 대한 세부 정보와이를 해결하기위한 몇 가지 옵션을 제공합니다. 그중 하나는 사용되지 않은 모든 리소스 제거입니다. 이 옵션을 선택하면 사용하지 않는 모든 리소스가 삭제됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.