发布版本的应用程序大小比调试版本增加了。

4

在我之前的所有项目中,调试版本都比发布版本更大。

但是我遇到了一个奇怪的问题。 当我构建调试APK时,它的大小为1085KB

如果我构建发布APK,它的大小为2432KB

有人能够给我解决这个问题的方法吗?

我的build.gradle中的依赖项:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "ranjih.kotlinandroid"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 5
        versionName "1.3"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-config:10.2.1'
    compile 'com.google.firebase:firebase-messaging:10.2.1'
    compile 'com.google.android.gms:play-services-ads:10.2.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true;
    }
    testCompile 'junit:junit:4.12'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile project(path: ':lib')
}

apply plugin: 'com.google.gms.google-services'
repositories {
    maven {
        url "https://jitpack.io"
    }
    mavenCentral()
    maven { url 'https://maven.fabric.io/public' }
}

apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}
buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        // These docs use an open ended version so that our plugin
        // can be updated quickly in response to Android tooling updates

        // We recommend changing it to the latest version from our changelog:
        // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

1
你的应用程序中有很多图像资源吗?在调试构建中,Android Studio可能不会打包所有分辨率。 - Jon
@Jonathan727 我没有很多图片,但是在资产文件夹中有更多的HTML文件。我的疑问是关于app compat依赖性。这个依赖会增加应用程序的大小吗? - Ranjithkumar
1
我建议按照@Moonbloom的建议进行测试,并生成两个发布APK,一个包含minify,一个不包含。 buildTypes { release { minifyEnabled false} releaseMinify { minifiyEnabled true } } - Jon
另外,请将您的应用程序的整个 build.gradle 文件发布。 - Jon
@Jonathan727 如果我使用 **{ release { minifyEnabled false}}**,它会生成3764KB的文件。但是我不知道为什么调试版本的大小却更小。完整的gradle文件已添加。 - Ranjithkumar
显示剩余2条评论
3个回答

3
您正在进行测试,对于调试版本未使用,而对于发布版本使用了测试。这是不可行的。
请使用相同的构建变体进行测试。
启用混淆和缩小资源后,我始终具有相同或更低的APK大小。
库可以根据构建类型定义不同的资源,因此其中一个在发布版本中构建时可能需要占用更多空间,而在调试版本中则不需要。
否则,请尝试使用Android Studio内置工具对APK进行反编译,以查看占用所有空间的内容。

当我调试构建时,它比发布构建要大。这个问题的原因是我没有构建APK,只是运行了项目并自动生成了APK(已经测试过了),让我感到困惑 :) - Ranjithkumar

0

如果存在大的PNG文件,请尝试使用下一个:

android {
    …
    buildTypes {
        release {
            crunchPngs true // or false
        }
    }
}

0

如果你在设备/模拟器上尝试运行或调试应用程序时,只生成了由Android Studio生成的调试APK,则似乎该APK仅打包了特定设备规格的资源/依赖项。

尝试使用“构建”>“构建APK”,您可能会注意到(想必)相同的调试APK将更大,甚至比发布版本还要大。

我也回答了一个类似的问题,并提供了更多关于为什么会发生这种情况的详细说明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接