2016-09-22 8 views
9

apgu 크기를 줄이기 위해 proguard를 사용하고 있습니다. 디버그 APK는 90MB에서 55MB로 줄지 만 서명 된 APK는 71MB입니다. 여기 내 build.gradle 코드 :android release apk이 (가) 디버그 apk보다 큽니다

는 플러그인을 적용 'com.android.application'

안드로이드 {

signingConfigs { 
    XXXX { 
     keyAlias 'xxxx' 
     keyPassword 'xxxx' 
     storeFile file('/Users/xxxx.jks') 
     storePassword 'xxxxxx' 
    } 
} 
compileSdkVersion 23 
buildToolsVersion "24.0.2" 
defaultConfig { 
    applicationId "com.xxxx" 
    minSdkVersion 14 
    targetSdkVersion 22 
    versionCode 61 
    versionName "4.1.8.1" 
    multiDexEnabled true 
    signingConfig signingConfigs.XXXX 

    ndk { 
     abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 
    } 
} 

buildTypes { 
    release { 
     minifyEnabled true 
     shrinkResources true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.XXXX 
    } 
    debug { 
     minifyEnabled true 
     shrinkResources true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.XXXX 
    } 
} 
productFlavors { 
} 

dexOptions { 
    javaMaxHeapSize "4g" 
} 

packagingOptions { 
    exclude 'META-INF/LICENSE.txt' 
} 

}

저장소 { mavenLocal() 받는다는 { 을 이름 "jcenter" url "http://jcenter.bintray.com/" } }

종속 { ... }

당신이 다음 안드로이드 스튜디오는 필요한 리소스 파일을 첨부 전화의 특정 유형의 로컬 응용 프로그램을 구축 enter image description here

+0

디버깅에 인스턴트 런을 사용하고 있습니까? –

+0

ProGuard는 클래스 파일 만 처리하지만 스크린 샷에서는 두 버전간에 리소스가 다른 것을 분명히 알 수 있습니다. 릴리스 APK에는 더 많은 드로어 블이 있습니다. 릴리스 유형에 대한 추가 종속성이있을 수 있습니까? –

+0

인스턴트 메신저 @MohammedAtif를 사용하지 않았습니다. – Thinsky

답변

1

enter image description here. 출시 버전을 만들면 모든 유형의 드로어 블을 연결하므로 앱 파일 크기가 크게 늘어날 수 있습니다. , sosite 말했듯이

0

)뿐만 아니라 더가는 종종 내가 tinyPNG 웹 사이트 또는 단지 포토샵을 사용 -

나는 당신이 할 수있는만큼 많은 장소에서 PNG 대신 JPG를 사용하고 물론 그들을 압축하는 것이 좋습니다 이것은 빌드> APK 빌드를 통한 디버그 빌드 대신 인스턴트 실행을 사용하지 않아도 특정 장치에서 실행 또는 디버그를 의미하는 디버그 빌드를 비교하는 것과 관련이있는 것으로 보입니다.

저는이 두 가지를 zipdiff와 비교했으며 출력 결과는 here입니다. 미안하지만 쉽게 볼 수는 없지만 여전히 소스 코드에서 그 요점을 얻을 수 있습니다.

기본적으로 Run variant에는 선택된 대상 장치에 특정한 dexed 클래스가 포함되어 있으며 사용되지 않는 리소스는 제외되는 반면 일반 빌드 (릴리스 변형 포함)에는 일반적인 dexed 클래스 만 포함됩니다 사용 가능한 자원.