如何在 android studio 中减小 Apk (.apk) 的大小

How to reduce Apk (.apk) size in android studio

当我 运行 我的 apk 应用程序大小为 21 MB。即使我启用了proguard。我使用 android 工作室进行 运行 项目。在项目文件中,src 文件夹大小为 8.62 MB,lib 文件夹大小为 400 KB。那么我如何减小 .apk 文件的大小。 实际上 .apk 文件在几天前是 8 mb,具有相同的图像,但在 paypal 集成后,我的应用程序大小将增加到 21 mb。 构建文件夹的大小为 127 MB。

build.gradle(模块应用)是:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.oi.food"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions{
        exclude 'AndroidManifest.xml'
    } }

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile files('libs/httpmime-4.1.1.jar')
    compile files('libs/apache-mime4j-0.6.jar')
    compile 'com.squareup.picasso:picasso:2.3.2'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.paypal.sdk:paypal-android-sdk:2.14.1' }

您可以通过缩小图像大小轻松缩小应用程序的大小。请使用 https://tinypng.com/ 缩小图片大小。这将确保您的应用程序大小也减少。图像质量将保持不变。

此外,如果是库,请务必仅包含您真正需要的那些组件。同时删除任何不需要和未使用的导入。

尝试

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

shrinkResources true 将不包含您在最终 apk

中使用的资源中的图像

希望这对您有所帮助

我通过在模块应用 build.gradle 文件中添加此代码解决了这个问题。

 android {
        packagingOptions{
            exclude 'AndroidManifest.xml'
            exclude 'lib/arm64-v8a/libcardioDecider.so'
            exclude 'lib/arm64-v8a/libcardioRecognizer.so'
            exclude 'lib/arm64-v8a/libcardioRecognizer_tegra2.so'
            exclude 'lib/arm64-v8a/libopencv_core.so'
            exclude 'lib/arm64-v8a/libopencv_imgproc.so'
            exclude 'lib/armeabi/libcardioDecider.so'
            exclude 'lib/armeabi-v7a/libcardioDecider.so'
            exclude 'lib/armeabi-v7a/libcardioRecognizer.so'
            exclude 'lib/armeabi-v7a/libcardioRecognizer_tegra2.so'
            exclude 'lib/armeabi-v7a/libopencv_core.so'
            exclude 'lib/armeabi-v7a/libopencv_imgproc.so'
            exclude 'lib/mips/libcardioDecider.so'
            exclude 'lib/x86/libcardioDecider.so'
            exclude 'lib/x86/libcardioRecognizer.so'
            exclude 'lib/x86/libcardioRecognizer_tegra2.so'
            exclude 'lib/x86/libopencv_core.so'
            exclude 'lib/x86/libopencv_imgproc.so'
            exclude 'lib/x86_64/libcardioDecider.so'
            exclude 'lib/x86_64/libcardioRecognizer.so'
            exclude 'lib/x86_64/libcardioRecognizer_tegra2.so'
            exclude 'lib/x86_64/libopencv_core.so'
            exclude 'lib/x86_64/libopencv_imgproc.so'
        }
    }

           dependencies {
            compile fileTree(include: ['*.jar'], dir: 'libs')
            compile 'com.paypal.sdk:paypal-android-sdk:2.14.1'
        }

打开新项目向导点击完成前,取消勾选向后兼容性(appcompat)。 这可以从 1.5 MB 减少到 180 KB。

这 4 件事可以将您的 apk 大小减少近 50-60%

  • proguard-android.txt替换为proguard-android-optimize.txt
  • 制作minifyEnabledtrue
  • 添加shrinkResourcestrue
  • 添加resConfigs

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            resConfigs "en"
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    

详情:

  • proguard-android-optimize.txt 是比 proguard-android.txt.

  • 更积极的 progurard 配置
  • shrinkResources 属性将删除所有资源,这些资源不会在项目的任何地方使用。

  • resConfigs 属性将在构建应用程序时删除所有其他本地化资源。这里去掉英文以外的资源。

我认为您应该将您的 APK 构建为(APK 捆绑包),Google 针对 APK 大小问题进行推广。我已经为我的项目使用了该选项,它确实减小了我的 APK 的大小。

减小 APK 文件大小的最佳方法是减少 build.gradle 文件中使用的库的使用。这些库创建了大量冗余,进而增加了项目的大小.. enter image description here

您可以使用一些技巧来减小 apk 的大小:

1. Proguard: 在 app-level 的 build.gradle 文件中,添加以下代码

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

2。不必要的资源: 很多时候源代码中存在不必要的资源。通过 Analyze->Inspect Code 检查源代码。检查结束后,删除不需要的资源。

3。 Webp 图像: Webp 图像比 png 文件的尺寸更小,而且它保留了原始图像质量。 Android 原生支持 webp 图像。 Right-click drawable(/mipmap) 文件夹 -> 转换为 webp。选择适合您需要的选项。

4.已签名的 apk: 调试 apk 的大小大于已签名的 apk。通过转到 Build-> Generate Signed Bundle/Apk->APK 来生成签名的 apk。整体 apk 大小现在减少了。

5. Android 应用程序包: 如果您要在 Google Play 上上传应用程序,请生成 Android 应用程序包而不是 apk.To 生成应用程序包转到,构建-> 生成签名 Bundle/Apk-> Android App Bundle。它肯定会减少您的应用程序大小。例如,使用 Android App Bundle,我的 10 MB apk 大小减少到仅 6-7 MB。