【问题标题】:Exclude xml files from compilation android [resource shrinking]从编译android中排除xml文件[资源收缩]
【发布时间】:2015-11-03 11:32:15
【问题描述】:

我想使用一些 xml 文件作为模型来预览布局的不同状态,但我不想将其包含在 apk 中,因为这些 xml 文件仅用于预览目的。我想告诉 gradle 哪些文件/目录要忽略资源。

this excellent article 解释的方式类似,通过使用产品风味轻松减小低内存设备的 apk 大小也很有用。

也许 proguard 可以帮忙?

【问题讨论】:

    标签: android gradle android-gradle-plugin proguard android-proguard


    【解决方案1】:

    如果您使用的是 android studio,您可以通过构建风格添加资源您想要的示例您可以为调试构建添加字符串资源,为主版本构建添加不同的字符串资源。您只需右键单击添加 xml 资源,选择资源类型并指定源集。

    如果您只为调试风格而不是在主版本中添加布局,那么每次您签署 apk 时,这些布局将不会包含在 apk 中。希望对你有帮助:)

    【讨论】:

    • 为什么我以前没想过! :) 谢谢,这不是我认为我可以解决这个问题的方式,但它是一个可行的解决方案 :) 另外,如果您正在构建全球应用程序,请考虑我在问题中提供的链接,我只有 8GB 我的手机,选择我必须卸载哪些应用才能尝试其他应用很痛苦......
    • @LouisCognault 我回答你的问题了吗?你真正面临的问题是什么?如果我是对的,proGuard 将删除所有未使用的类。
    • 是的,你回答了我的问题,配置这些构建风格只需要一点时间(并且每次将导入的 Material 图标从插件 Android Drawable Importer 移动到风格目录中)。
    • 我添加了“mockups”来调试flavor,但出现错误...xmlns:android="http://schemas.android.com/apk/res/android" 被Android Studio 标记为红色,表示Uri 未注册,快速修复不起作用...问题是它完全禁用了自动完成功能,这对于长命名的资源来说是一种痛苦。你有类似的不当行为吗?
    【解决方案2】:

    我们称之为“资源缩减”。 All info about it is here.

    看看shrinkResources true。构建系统将尝试使用此标志查找未使用的资源文件,并将它们从构建中删除。您可以将其添加到您的调试 buildType 以及任何构建风格。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2018-05-06
      • 2018-02-06
      • 2012-05-03
      相关资源
      最近更新 更多