如何从主APK中排除资源或aar文件

dev*_*v90 8 android android-install-apk apk-expansion-files

由于我需要减小APK文件的大小,我已经按照Apk扩展指南将APK分成块.

下载库定义的方式来下载expansion file,但我需要知道的排除方法resource files,并aar 从APK文件.

我发现以下,但这些既不删除resource-drawable files任何arr文件,也不删除任何文件,并且apk的大小保持不变.

出于测试目的,我添加drawables了大约4 MB几个arr文件3 MB.我是apkBuild->Build APK选项创建的.我不知道以下是否会影响已签名的APK.

sourceSets {
    main {
        resources {
            exclude '**/drawable/*'

        }
    }
}



android {
    packagingOptions {
        exclude 'lib/armeabi/a.so'
    }
}
Run Code Online (Sandbox Code Playgroud)

Har*_*ode 5

如果您希望保留或丢弃特定资源,请在项目中使用<resources>标记创建XML文件,并指定要保留在工具中的每个资源:工具中保留属性和每个资源:discard属性.两个属性都接受以逗号分隔的资源名称列表.

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
    tools:discard="@layout/unused2" />
Run Code Online (Sandbox Code Playgroud)

将此文件保存在项目资源中,例如,在res/drawable/keep.xml中.构建不会将此文件打包到您的APK中.这样您就可以自定义要保留的资源.


Abh*_*hek 1

您可以做两件事。

  1. 首先,您可以使用Lint。Lint 将帮助突出显示并删除代码中未使用的所有资源,包括可绘制对象。

  2. 其次你可以使用Proguard。使用Proguard您可以选择要缩小的 APK 版本,包括debug(或主版本,如您的示例中)版本。只需插入以下代码即可。

    android {
    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    } }
    
    Run Code Online (Sandbox Code Playgroud)