如何在 android studio 中减小 Apk (.apk) 的大小
Posted
技术标签:
【中文标题】如何在 android studio 中减小 Apk (.apk) 的大小【英文标题】:How to reduce Apk (.apk) size in android studio 【发布时间】:2016-12-17 16:46:38 【问题描述】:当我运行我的应用程序时,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? 然后尝试缩小图像大小,删除未使用的图像,它可能会帮助你。 How to reduce Android APK size?的可能重复 【参考方案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
制作minifyEnabled
true
添加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
【讨论】:
以上是关于如何在 android studio 中减小 Apk (.apk) 的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的Android Studio中将本地管理面板与我的Android应用程序连接?
Android studio“MethodHandle.invoke 和 MethodHandle.invokeExact 仅支持从 Android O (--min-api 26) 开始”构建 AP