2016-09-22 14 views
9

私はapguサイズを小さくするためにproguardを使用しています。デバッグAPKは90MBから55MBに削減されますが、署名されたAPKは71MBです。ここで私のbuild.gradleコードがある: 'com.android.application'アンドロイドリリースapkがdebug apkより大きい

アンドロイド{

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

enter image description here

+0

デバッグにインスタント・ランを使用していますか? –

+0

ProGuardはクラスファイルのみを処理しますが、スクリーンショットでは2つのバージョン間でリソースが異なることが明らかです。リリースAPKにはさらに多くのドロワブルがあります。リリースの種類に依存している可能性はありますか? –

+0

私はインスタント・ラン@MohammedAtifを使用しませんでした。 – Thinsky

答えて

1

あなたはAndroidのメーカーだけで、必要なリソースファイルを添付し、電話機の特定のタイプのためにローカルでアプリケーションを構築します。リリース版をビルドすると、すべての種類のドロアブルが添付されているので、アプリケーションファイルのサイズが大幅に増加する可能性があります。私はあなたができる限り多くの場所でPNGの代わりにJPGを使用し、もちろんそれらを圧縮することをお勧め

- 多くの場合、私はtinyPNGウェブサイトまたはちょうどPhotoshopのを使用します。)

0

sositeが言ったように、だけでなく、さらに行きます、これは、ビルド>ビルドAPKによるデバッグビルドではなく、インスタント実行が有効になっていなくても、特定のデバイスで実行またはデバッグを意味するデバッグビルドを比較しているようです。

私はこれらの2つをzipdiffと比較し、出力html hereを公開しました。残念ながら、それは容易には見えませんが、あなたはまだソースコードからその要点を得ることができます。

基本的に、Runバリアントには、選択されたターゲットデバイスに固有のデクレッドクラスが含まれており、使用されていないリソースは除外されているようです。通常のビルド(リリースバリアントも含む)には、利用可能なリソース

関連する問題