【问题标题】:How to reduce Apk (.apk) size in android studio如何在 android studio 中减小 Apk (.apk) 的大小
【发布时间】:2016-04-11 04:46:13
【问题描述】:

当我运行我的应用程序时,apk 的大小将为 21 MB。即使我启用了proguard。我使用 android studio 来运行项目。在项目文件中,src 文件夹大小为 8.62 MB,lib 文件夹大小为 400 KB。那么我如何减小 .apk 文件的大小。 实际上 .apk 文件在某些​​日子之前是 8 mb 的图像,但在 paypal 集成后,我的应用程序大小将增加到 21 mb。 构建文件夹的大小为 127 MB。

build.gradle(module app) 是:

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' }

【问题讨论】:

  • 您的应用是否包含大量图片?
  • 实际图像大小为 7 mb,代码和图像的总大小为 8.62 MB
  • 您是否生成了发布 apk?
  • 然后尝试缩小图像大小,删除未使用的图像,它可能会帮助你。

标签: android apk


【解决方案1】:

我通过在模块 app 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'
        }

【讨论】:

    【解决方案2】:

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

    • proguard-android.txt 替换为proguard-android-optimize.txt
    • 制作minifyEnabledtrue
    • 添加shrinkResources true
    • 添加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 属性将在构建应用程序时删除所有其他本地化资源。在这里,它剥离了英语以外的资源。

    【讨论】:

      【解决方案3】:

      试试

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

      shrinkResources true 不会包含您在最终apk 中使用的资源中的图像

      希望对你有帮助

      【讨论】:

      • 实际上 .apk 文件在某些​​日子之前是 8 mb 的图像,但在 paypal 集成后,我的应用程序大小将增加到 21 mb。构建文件夹的大小为 127 MB。
      【解决方案4】:

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

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

      【讨论】:

      • 哦,我明白了。如果您想减小 apk 的大小,您可能希望在用户第一次运行应用程序时通过网络加载图像。这样 .apk 不需要所有的图像..
      【解决方案5】:

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

      1. Proguard:在应用级的build.gradle文件中,添加以下代码

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

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

      3. Webp 图像: Webp 图像的大小比 png 文件小,而且它保留了原始图像质量。更重要的是,Android 原生支持 webp 图像。右键单击可绘制(/mipmap)文件夹 -> 转换为 webp。 Choose appropriate options which suits your need.

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

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 或将其从 gradle 导入中删除
        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          减小 APK 文件大小的最佳方法是减少 build.gradle 文件中使用的库的使用。这些库产生了很多冗余,反过来又增加了项目的大小.. enter image description here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多