如何在Android Studio中减小Apk (.apk)文件大小

4
当我运行我的应用程序时,apk的大小为21 MB。即使我启用了proguard。我使用Android Studio运行项目。在项目文件中,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' }

实际上,图片大小为7 MB,代码和图片的总大小为8.62 MB。 - Amit Desale
你生成了发布版的 APK 吗? - Nilabja
4
可能是如何减小Android APK大小?的重复问题。 - Maheshwar Ligade
我已经压缩了所有图片的大小。 - Amit Desale
请点击此处查看如何减小应用APK文件大小的相关内容:https://dev59.com/xm865IYBdhLWcg3wcOHG - User_1191
显示剩余3条评论
10个回答

11

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

8

这4个方法可以将您的apk尺寸减少近50-60%。

  • Replace proguard-android.txt with proguard-android-optimize.txt
  • Make minifyEnabled true
  • Add shrinkResources true
  • Add 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 更为激进的 Proguard 配置文件。

  • shrinkResources 属性将删除项目中未使用的所有资源。

  • resConfigs 属性将在构建应用程序时删除其他本地化资源。这里仅保留英语资源。


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 文件更小,同时保留了原始图像的质量。此外,Webp 图片在 Android 中具有本地支持。右键单击可绘制(/mipmap)文件夹->转换为 Webp。选择适合您需求的选项。

4. 签名 apk: 调试 apk 的大小大于签名 apk 的大小。通过“生成签名束/Apk-〉APK”,生成签名 apk。整体 apk 大小现在已经减小。

5. Android 应用包: 如果您要上传应用到 Google Play,请生成 Android 应用包而不是 apk。要生成应用包,可以前往“构建->生成签名束/Apk->Android 应用包”。这肯定会减小您的应用程序大小。例如,我使用 Android 应用包将大小为 10 MB 的 apk 缩减至仅 6-7 MB。


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

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

希望这能帮助到您。


1
实际上,几天前我的.apk文件大小是8MB,在相同的图片下,但在集成PayPal之后,我的应用程序大小将增加到21MB。构建文件夹的大小为127MB。 - Amit Desale

4

通过减小图片尺寸,您可以轻松地减小应用程序的大小。请使用https://tinypng.com/来压缩您的图像大小。这将确保您的应用程序大小也得到了减小。图像质量将保持不变。

另外,在使用库的情况下,请确保仅包括您真正需要的那些组件。还要删除任何不需要和未使用的导入。


哦,我明白了。如果你想减小apk的大小,你可能希望在用户第一次运行应用程序时通过网络加载图像。这样,.apk就不需要包含所有的图像。 - Natarajan Raman

2

在打开新项目向导时,在点击"完成"之前,请取消勾选向后兼容性(appcompat)。 这样可以将文件大小从1.5MB减少到180KB。


仅返回翻译后的文本:或从Gradle导入中删除它。 - Evgenii Vorobei

2
我在我的应用程序中实现了Zoom SDK,apk大小约为487 MB。我尝试了许多解决方案,但都没有起作用。唯一对我有用的解决方案是在manifest中的application标签中使用android:extractNativeLibs="true"

1

我认为你应该将你的APK构建为(APK bundle),Google提倡这种方式来解决APK大小的问题。我在我的项目中使用了这个选项,它确实减小了我的APK大小。


0
android {
    // Other settings

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

仅支持特定的像素密度

Android 支持大量设备,包括各种屏幕像素密度。在 Android 4.4(API 级别19)及以上版本中,框架支持各种像素密度:ldpi、mdpi、tvdpi、hdpi、xhdpi、xxhdpi 和 xxxhdpi。虽然 Android 支持所有这些像素密度,但您不需要将栅格化资源导出到每个像素密度。

删除不必要的生成代码

避免提取本机库


-2
减小 APK 文件大小的最佳方法是减少在 build.gradle 文件中使用的库的使用。这些库会创建很多冗余,从而增加项目的大小。 enter image description here

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