当我运行我的应用程序大小的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' }
Run Code Online (Sandbox Code Playgroud)
我通过在模块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'
}
Run Code Online (Sandbox Code Playgroud)
这 4 件事将您的 apk 大小减少了近 50-60%
proguard-android.txt为proguard-android-optimize.txtminifyEnabled trueshrinkResources true添加 resConfigs
buildTypes {
release {
minifyEnabled true
shrinkResources true
resConfigs "en"
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)细节:
proguard-android-optimize.txt是比proguard-android.txt.
shrinkResources 属性将删除所有资源,这些资源在项目中的任何地方都没有使用。
resConfigs属性将在构建应用程序时删除所有其他本地化资源。在这里,它剥离了英语资源之外的其他资源。
小智 5
您可以使用一些技术来减小 apk 的大小:
1. Proguard:在build.gradle应用程序级别的文件中,添加以下代码
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
2. 不必要的资源:很多时候源代码中存在不必要的资源。通过“分析”->“检查代码”检查源代码。检查结束后,删除不需要的资源。
3. Webp 图像: Webp 图像比 png 文件更小,并且保留了原始图像质量。更重要的是,Android 原生支持 webp 图像。右键单击drawable(/mipmap)文件夹->转换为webp。选择适合您需要的适当选项。
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,我的 apk 大小从 10 MB 减少到仅 6-7 MB。
| 归档时间: |
|
| 查看次数: |
18806 次 |
| 最近记录: |