在面试中,有人问我如何减小APK文件的大小。我的回答是管理资源并管理正在使用的库,并删除任何未使用的库。但他告诉我还有其他方法可以减小APK文件的大小。
有人能告诉我这些方法是什么吗?
在面试中,有人问我如何减小APK文件的大小。我的回答是管理资源并管理正在使用的库,并删除任何未使用的库。但他告诉我还有其他方法可以减小APK文件的大小。
有人能告诉我这些方法是什么吗?
按照以下步骤可以减小APK文件的大小。
第一步:
确保在build.gradle
文件中的release
buildType中启用了缩小(minify)功能:
buildTypes {
release {
minifyEnabled true
}
}
通过这样做,你也启用了proguard,因此你需要添加用于在项目中使用库的proguard规则。例如,以下是Retrofit2的proguard规则:
-dontwarn okio.**
-dontwarn javax.annotation.**
您可以将以下两个规则添加到您的proguard-rules.pro
文件中。
第二步:
确保您已在build.gradle
文件中的release
buildType中启用了资源缩减:
buildTypes {
release {
shrinkResources true
}
}
因此,在build.gradle
文件中,你最终的release
范围应该如下所示:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
第三步:
你在项目中使用的一些库可能会提供不同国家和语言的额外资源。例如,一个库可能会有两个string.xml文件,一个是英语版本,一个是日语版本。但是你只支持应用程序的英语语言,所以你不需要那些日语字符串。
要实现这一点,请打开build.gradle文件并添加以下行:
resConfigs "en"
将以下内容添加到android作用域下的defaultConfig作用域:
android {
...
defaultConfig {
...
resConfigs "en"
}
}
第四步:
我只有这些方法!希望能对您有所帮助
minfyEnabled true
(启用代码压缩)build.gradle
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
build.gradle
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
...
//Other parameters
debuggable false
jniDebuggable false
renderscriptDebuggable false
}
}
}
defaultConfig {
//...
//...
//...
//strip other than english resources
resConfigs "en"
}
我能想到另外三种方法:
minifyEnabled true
来缩小apk的大小。
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}