You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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. 自定义字体(可选)

如果需要保留特定字体风格,建议只引入你实际用到的字体文件,然后在主题中统一配置:

  1. 在res/font目录下放入需要的字体文件(比如roboto_regular.ttf)
  2. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:54:58