“minifyEnabled”대“shrinkResources”-차이점은 무엇입니까? 그리고 절약 된 공간을 얻는 방법?
배경
Andriod 문서 ( 여기 ) 의 "Resource Shrinking"웹 페이지에 따르면 다음 줄을 사용하여 build.gradle 파일을 통해 앱의 크기를 최소화 할 수 있습니다.
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
그리고 그들은 그것을 사용할 때 프로세스에서 얼마나 절약되는지 알려줄 것이라고 말합니다.
shrinkResources를 사용 설정하면 앱을 빌드 할 때 빌드 중에 다음과 같은 출력이 표시되어야합니다.
... 사용하지 않는 리소스 제거 : 바이너리 리소스 데이터가 2570KB에서 1711KB로 감소 : 33 % 제거
질문
이러한 질문에 대한 답을 찾을 수 없습니다.
- Android-Studio 자체를 사용하여 서명 된 앱을 만들 때 저장 한 양과 제거 / 수정 된 파일에 대한 정보를 어디서 찾을 수 있습니까?
- "shrinkResources"가 "minifyEnabled"가하지 않는 것은 정확히 무엇입니까? 그리고 "shrinkResources"가 "minifyEnabled"에 의존하는 이유는 무엇입니까?
- 이러한 옵션이 이미지 파일의 크기 및 / 또는 품질에 영향을 줍니까?
- Proguard가 소스 코드 축소를 담당하지 않습니까? "코드 축소 기능을 켜려면 minifyEnabled를 활성화해야합니다."라는 메시지가 표시되기 때문입니다.
보자
Android-Studio 자체를 사용하여 서명 된 앱을 만들 때 저장 한 양과 제거 / 수정 된 파일에 대한 정보를 어디서 찾을 수 있습니까?
그것들은 gradle 로그에있을 것입니다. Android 스튜디오 내에서 나는 그것들이 Messages창 (Android, Run, TODO 창 옆)에 표시된다고 생각합니다 .
"shrinkResources"가 "minifyEnabled"가하지 않는 것은 정확히 무엇입니까? 그리고 "shrinkResources"가 "minifyEnabled"에 의존하는 이유는 무엇입니까?
minifyProGuard를 실행합니다. shrinkProGuard가 사용하지 않는 것으로 표시된 리소스를 제거합니다.
이러한 옵션이 이미지 파일의 크기 및 / 또는 품질에 영향을 줍니까?
아니!
Proguard가 소스 코드 축소를 담당하지 않습니까? "코드 축소 기능을 켜려면 minifyEnabled를 활성화해야합니다."라는 메시지가 표시되기 때문입니다.
ProGuard는 코드 만 축소합니다 . 폴더에있는 항목 shrinkResources일뿐 /res/입니다. shrinkResources실행할 ProGuard의 로그 출력에 따라 다릅니다. ProGuard는 실제로 코드를 분석하여 사용하지 않는 것을 파악하는 사람입니다.
편집하다:
방금 아주 멋진 블로그 게시물을 찾았습니다. CommonsWare가 다른 stackOverlow 질문에 게시했습니다. http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/
그것은 당신의 후속 질문을 완벽하게 설명합니다.
왜 하나가 다른 것에 의존할까요?
게시물에서 :
Proguard는 Java 측에서 작동합니다. 불행히도 리소스 측면에서는 작동하지 않습니다. 결과적으로 res / drawable의 my_image 이미지가 사용되지 않는 경우 Proguard는 R 클래스에서 참조 만 제거하지만 관련 이미지는 제자리에 유지합니다.
즉, shrinkResources드로어 블이 폴더에 있고 R클래스 에는없는 경우에만 비교합니다 .
2 번과 4 번 질문에 대한 답변 은이 주제에 대한 기타 유용한 정보와 함께 Android Dev Summit 2015의이 비디오에서 찾을 수 있습니다 .
논의 된 요점의 개요는 다음과 같습니다.
shrinkResourcesminifyEnabled참인 경우에만 고려됩니다.
minifyEnabled코드를shrinkResources축소하고 코드에서 참조되지 않는 리소스를 축소합니다.기본적
shrinkResources으로safe모드 에서 실행 됩니다. 로 전환 하면 리소스 축소에 영향을 미치도록 수동으로strict제공tools:keep하고tools:discard플래그 를 지정할 수 있습니다 .
- shrinkResources는 생성 된 APK의 크기를 줄이고 사용하지 않는 리소스를 제거하는 데 유용합니다.
- minifiedEnabled는 단순히 Android 플러그인이 사용하지 않는 코드없이 APK를 패키징하도록 도와주는 Proguard를 실행하여 축소합니다.
'Program Club' 카테고리의 다른 글
| 소문자가 포함 된 값이있는 행을 찾는 방법 (0) | 2020.12.02 |
|---|---|
| 문자열을 특정 날짜 형식으로 변환 하시겠습니까? (0) | 2020.12.02 |
| 프로젝트에서 C # 클래스 라이브러리를 어떻게 사용합니까? (0) | 2020.12.01 |
| jQuery-Ajax를 통해 JSON을 PUT하는 방법? (0) | 2020.12.01 |
| Django : 도우미 함수를 어디에 넣을까요? (0) | 2020.12.01 |