Android 프로젝트에서 사용하지 않는 문자열을 찾는 간단한 방법이 있습니까?
에 많은 문자열이 선언 된 거대한 Android 프로젝트가 strings.xml
있습니다. 에서 사용하지 않는 문자열을 제거하고 싶었습니다 strings.xml
.
그렇게 쉬운 방법이 있습니까?
에 안드로이드 스튜디오 :
메뉴 -> 분석 -> 이름으로 검사 실행 -> 사용하지 않은 자원
확인 파일 마스크 (들) 체크 박스를 넣어 strings.xml
텍스트 필드에.
상당히 쉬운 또 다른 솔루션이 있습니다. Android Studio 메뉴에서
리팩토링은> 사용하지 않는 리소스를 제거 ... .
미사용 리소스가 무엇인지 확인하고 선택적으로 제거 하려면 미리보기 를 클릭하십시오 .
필자의 경우 "사용하지 않은 리소스 제거"를 사용하고 있음에도 불구하고 "이름으로 검사 실행"이 작동하지 않았습니다.
해결책:
- strings.xml 열기
- 보조 클릭
- 리 팩터-> 사용하지 않는 리소스 제거
"사용하지 않은 리소스 제거"가 한 가지 방법으로 작동하지만 다른 방법으로 작동하지 않는 이유는 전혀 없습니다.
ADT 16을 사용하면 가능한 한 간단하게 수행 할 수 있습니다. ADT 16으로 업데이트하고 Android Lint를 사용하십시오 . 정말 놀라운 도구입니다. 사용하지 않는 모든 리소스 (문자열뿐만 아니라)와 그 이상을 찾을 수 있습니다 . 공식 사이트에서 :
Here are some examples of the types of errors that it looks for:
- Missing translations (and unused translations)
- Layout performance problems (all the issues the old layoutopt tool used to find, and more)
- Unused resources
- Inconsistent array sizes (when arrays are defined in multiple configurations)
- Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
- Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
- Usability problems (like not specifying an input type on a text field)
- Manifest errors
and many more.
내 질문을 살펴 보십시오 : 자원이 사용되는지 확인하십시오.
아무도 진정한 대답을 얻지 못했기 때문에 문자열을 포함하는 사용되지 않는 리소스를 검색하도록 스크립트를 프로그래밍했습니다.
희망이 당신을 도와줍니다.
http://code.google.com/p/android-unused-resources/ 링크를 참조하십시오 . AndroidUnusedResources.jar 도구가 있습니다. 이것을 실행하고 사용하지 않는 문자열이나 리소스를 제거하십시오.
- 딥
string.xml을 확인하려면
쉽습니다 (적어도 내 버전의 Eclipse에서는)
Android 용 Eclipse에서 (버전 v22.6.2-1085508이 있습니다)
- "패키지 탐색기"에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하십시오.
- "Android 도구"를 선택하십시오.
- "린트 실행 : 일반적인 오류 확인"을 선택하십시오.
이제 strings.xml을 열면 사용되지 않는 문자열이 강조 표시됩니다.
다른 잠재적 인 문제를 해결할 수 있습니다.
Android Studio Press에서
Ctlr + Alt + Shift + i
선택-> 미사용 리소스
미사용 문자열과 아이콘이 표시됩니다.
고마워요 해피 코딩 :)
이것이 Android 3.3에서 수행 한 방법입니다.
저장되지 않은 변경 사항을 저장소에 체크인하십시오.
- 앱 모듈을 마우스 오른쪽 버튼으로 클릭-> 리 팩터-> 사용하지 않는 리소스 제거-> 미리보기
- 리팩토링 미리보기에서 두보기 ( '삭제할 항목'및 '사용하지 않은 자원 선언')를 모두 축소하십시오.
- '삭제할 항목'을 마우스 오른쪽 버튼으로 클릭-> 제외
- '사용하지 않은 리소스 선언'을 마우스 오른쪽 버튼으로 클릭-> 제외
- 이제 '사용하지 않은 리소스 선언'을 확장하고 그 아래에서 앱 특정 strings.xml을 찾으십시오 (여러 개의 strings.xml이 있음)
- 해당 strings.xml-> 포함을 마우스 오른쪽 단추로 클릭하십시오.
- 리팩터링하십시오! xml 파일에서 사용되지 않은 모든 문자열이 삭제됩니다!
참고 : 프로젝트를 빌드하십시오. 컴파일에 실패하면 이러한 strings.xml이 일부 레이아웃 / 메뉴 xml에서 참조 될 가능성이 높습니다. 따라서 해당 레이아웃 xml을 수동으로 삭제할 수도 있습니다!
빌드하고 실행하십시오. 테스트!
Run this script from root of your project.
for resourcefile in `find res/values/*.xml`; do for stringname in `grep '.*/\1/g'`; do count1=`grep -rc "R.string.${stringname}" src | egrep -v ':0$' | wc -l` count2=`grep -rc "@string/${stringname}" res/layout | egrep -v ':0$' | wc -l` count3=`grep -rc "@string/${stringname}" res/menu | egrep -v ':0$' | wc -l` count4=`grep -rc "@string/${stringname}" AndroidManifest.xml | egrep -v '^0$' | wc -l` count5=`grep -rc "@string/${stringname}" res/xml | egrep -v ':0$' | wc -l` if [ $count1 -eq 0 -a $count2 -eq 0 -a $count3 -eq 0 -a $count4 -eq 0 -a $count5 -eq 0 ]; then echo $resourcefile : $stringname fi done done for resourcename in `find res/drawable* -type f -name '*.???'`; do resource=`echo $resourcename | xargs basename | sed "s/^\(.*\)\....$/\1/g"` count1=`grep -rc "R\.drawable\.${resource}" src | egrep -v ':0$' | wc -l` count2=`grep -rc "@drawable/${resource}" res/layout | egrep -v ':0$' | wc -l` count3=`grep -rc "@drawable/${resource}" res/drawable*/*.xml | egrep -v ':0$' | wc -l` count4=`grep -rc "@drawable/${resource}" res/menu | egrep -v ':0$' | wc -l` count5=`grep -rc "@drawable/${resource}" AndroidManifest.xml | egrep -v '^0$' | wc -l` if [ $count1 -eq 0 -a $count2 -eq 0 -a $count3 -eq 0 -a $count4 -eq 0 -a $count5 -eq 0 ]; then echo $resourcename fi done for resourcename in `find res/layout/*.xml`; do resource=`echo $resourcename | xargs basename | sed "s/^\(.*\)\....$/\1/g"` count1 =`grep -rc "R \ .layout \. $ {resource}"src | egrep -v ': 0 $'| 화장실 -l` [$ count1 -eq 0]이면; 그때 echo $ resourcename fi 끝난
그것은 나에게 이런 종류의 출력을 제공합니다 :
res / values / activity_strings.xml : activity_more res / values / activity_strings.xml : activity_as_reply_to res / values / db_strings.xml : sql_backlog_count res / values / db_strings.xml : sql_backlog_update_last_resend ...
누락 된 번역의 경우 :
InteliJ를 사용하여 InteliJ의 패널 표시 줄을 클릭하십시오. "분석"> "이름으로 검사 실행"> 입력 : 불완전한 번역
'Programing' 카테고리의 다른 글
'명명 된 파이프 공급자, 오류 40-SQL Server에 대한 연결을 열 수 없습니다'오류를 어떻게 수정합니까? (0) | 2020.06.23 |
---|---|
Mailto 링크는 Chrome에서 아무것도하지 않지만 Firefox에서는 작동합니까? (0) | 2020.06.23 |
관리자에게 Django 앱에 자세한 이름을 지정할 수 있습니까? (0) | 2020.06.23 |
두 세트의 차이 얻기 (0) | 2020.06.23 |
MySQL에서 현재 날짜와 시간을 얻는 방법? (0) | 2020.06.23 |