我的应用程序的sdk最低版本为16,并且我没有在gradle中添加v4支持。但是当我分析apk时,v4支持drawables是大量资源。我想知道为什么我的应用程序正在开发最低16版本时将它们包含在APK中。
v4软件包中已转换了png矢量图像。但我的应用不需要v4支持。
compileSdkVersion 28
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
...
}
我需要一个可以从APK中删除v4支持资源的解决方案,因此我的应用大小会大大减少。
我的依赖项是-
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
implementation 'com.android.volley:volley:1.1.0'
implementation 'com.squareup.okhttp:okhttp:2.3.0'
implementation 'com.google.android.gms:play-services-analytics:16.0.4'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.3.+'
implementation 'com.github.medyo:android-about-page:1.2.2'
implementation 'com.ogaclejapan.smarttablayout:library:1.6.1@aar'
implementation 'com.ogaclejapan.smarttablayout:utils-v4:1.6.1@aar'
implementation 'com.squareup.picasso:picasso:2.3.2'
implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
implementation 'com.github.ronaldsmartin:Material-ViewPagerIndicator:1.+'
implementation('com.google.api-client:google-api-client-android:1.23.0') {
exclude group: 'org.apache.httpcomponents'
}
implementation "com.intuit.sdp:sdp-android:$SDP_VERSION"
implementation "com.intuit.ssp:ssp-android:$SDP_VERSION"
implementation "com.squareup.retrofit2:retrofit:${RETROFIT_VER}"
implementation "com.squareup.retrofit2:converter-gson:${RETROFIT_VER}"
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
implementation 'com.googlecode.libphonenumber:libphonenumber:8.0.1'
implementation 'org.greenrobot:eventbus:3.1.1'
implementation ('com.crashlytics.sdk.android:crashlytics:2.9.5@aar') {
transitive = true
}
implementation 'com.tbuonomo.andrui:viewpagerdotsindicator:2.1.2'
}
答案 0 :(得分:2)
支持库版本号表示最初支持的最低API级别。但是随着时间的流逝,旧的Android API级别已经过时了,它们会从库中删除,但是版本号却保持不变。因此,您不应将支持库的版本号视为与开发API目标的相关标识符。
通过查看您的Gradle,似乎可以将v4支持库作为依赖项包含在您所使用的第三方库之一中。
评论更新:
您可以尝试在gradle中设置 minifyEnabled true ,但是我怀疑这会产生影响,因为这些资源被第三方依赖项使用。
对于您要问的问题,没有一种魔术子弹,而且在某种可能将其删除的设置中也没有直接解决方案。
您需要做的是调查哪些第三方依赖项正在使用支持库,并评估是否可以找到替代方法。仅举一个例子,我为您做了一些工作,但是您将需要检查所有依赖项:
com.ogaclejapan.smarttablayout:library 使用:
com.github.medyo:android-about-page 使用:
com.github.bumptech.glide:glide 使用:
org.greenrobot:eventbus 使用: