在构建我的主要Android应用程序时,我的库带来了许多类

时间:2018-04-06 13:45:58

标签: android gradle android-gradle android-library aar

我创建了我的第一个库并将库构建为.aar,然后将.aar文件部署到我的私有工件服务器中。

实际上 .aar 文件大小只是 18kb ,但当我在其他应用中使用该库作为依赖项时。我的apk文件大小增加了 3.5MB

这是我在APK Analyze上发现的。 enter image description here

将我的库添加到app依赖项后,然后构建apk。在我的apk中突然出现新文件classes3.dex。这个文件带来了许多软件包,但我真的只需要gdn软件包。

如何排除那些所有不必要的包/类?

这是我的库build.gradle文件

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

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

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compileOnly 'com.android.volley:volley:1.1.0'
    compileOnly 'com.android.support:appcompat-v7:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

1 个答案:

答案 0 :(得分:0)

你的lib有依赖,也有依赖等... 这是最终apk中嵌入的内容,以确保每个API都能够运行。

现在您可以删除非常必要的内容并使用 proguard 工具删除不必要的内容。它将确保仅保留所需的依赖项,因为在代码中的某处,会调用此依赖关系树。它将删除不必要的。