Android Studio构建APK体积过大:如何移除未使用的字体依赖
移除未使用字体缩减APK体积的方法
你的APK体积超标是因为androidx.appcompat和com.google.android.material库默认打包了全套Roboto字体资源,而这些字体大多没被你用到。以下是具体解决步骤:
1. 启用资源自动缩减
在模块级的build.gradle中开启资源缩减和代码混淆,Android Studio会自动扫描并移除未被引用的资源(包括字体):
android { // 保留你原有的其他配置 buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
注意:shrinkResources依赖minifyEnabled开启,所以两者要同时设置。如果你的代码有动态引用资源的情况,需要在proguard-rules.pro中添加保留规则,但你的项目是简单GUI,大概率不需要额外配置。
2. 手动排除库中的字体资源
如果自动缩减没完全清理干净,可以直接排除AppCompat和Material库自带的资源模块,彻底去掉未使用的字体:
implementation('androidx.appcompat:appcompat:1.6.1') { exclude group: 'androidx.appcompat', module: 'appcompat-resources' } implementation('com.google.android.material:material:1.9.0') { exclude group: 'com.google.android.material', module: 'material-resources' }
注意:排除后,库的默认字体会 fallback 到系统字体,需要确认你的UI显示是否符合预期。如果需要特定字体,可以自己只引入用到的字体文件。
3. 自定义字体(可选)
如果需要保留特定字体风格,建议只引入你实际用到的字体文件,然后在主题中统一配置:
- 在
res/font目录下放入需要的字体文件(比如roboto_regular.ttf) - 在
res/values/styles.xml中修改主题:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <item name="android:fontFamily">@font/roboto_regular</item> <item name="fontFamily">@font/roboto_regular</item> </style>
内容的提问来源于stack exchange,提问作者Hao Zhou
相关产品推荐
相关产品推荐

