提问者:小点点

如何在android工作室中减少Apk(. apk)大小


当我运行我的应用程序大小的apk将21MB.即使我启用了proGuard.我使用android工作室来运行项目.在项目文件src文件夹有8.62MB大小和lib文件夹大小是400KB大小.所以我如何减少大小的. apk文件.实际上.apk文件是8 mb前一些天与相同的图像,但经过贝宝集成我的应用程序大小将增加到21 mb.构建文件夹的大小是127MB。

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

共3个答案

匿名用户

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

匿名用户

这4件事减少了你的apk大小几乎50-60%

>

  • progard-android. txt替换为progard-android-优化.txt
  • 使minifyEnabletrue
  • 添加收缩资源true
  • 添加resConfigs

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

    详情:

    >

  • progard-android-优化. txt是比progard-android.txt更激进的程序配置。

    属性将删除所有资源,这些资源在项目中的任何地方都没有使用。

    resConfigs属性将在构建应用程序时删除所有其他本地化资源。在这里,它剥离了英语以外的资源。

  • 匿名用户

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

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

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

    2.不必要的资源:很多时候源代码中存在不必要的资源。通过Analyze-输入源代码

    3. Webp图像:Webp图像比png文件的大小更小,并且保留了原始画质。更重要的是,Android原生支持webp图像。右键单击可绘制(/mipmap)文件夹-

    4.签名apk:调试apk大小大于签名apk。通过前往Build-生成签名apk

    5. Android应用程序捆绑包:如果您要在Google Play上上传应用程序,请生成Android应用程序捆绑包而不是apk.To生成应用程序捆绑包转到,Build-