【问题标题】:Creating Library project that uses data binding and proguard创建使用数据绑定和 proguard 的库项目
【发布时间】:2017-03-06 20:23:26
【问题描述】:

我需要创建一个 android 库,该库还包含使用数据绑定的布局。
我已经设法让库和包含的应用程序正常工作,但是一旦我尝试启用混淆 (minifyEnabled true),我就会得到:

无法解析{变量名称}的类型

这是合理的,因为我的变量类型在 proguard 处理期间发生了更改。
我试图通过在 public.xml 上声明其中一些资源来使我的资源私有,但这没有帮助。

无论如何都可以做到吗?

【问题讨论】:

    标签: android android-library android-proguard android-databinding


    【解决方案1】:

    但一旦我尝试启用混淆

    您必须通过调整项目/模块中的配置文件(通常为proguard-rules.pro,如果没有,请检查您的build.gradle 文件以供参考)来排除您的模型类成员被ProGuard 混淆。

    编辑

    但我试图隐藏我的数据模型,这样使用我的库的人就无法使用它们

    那么你不能使用数据绑定,因为它需要从你的模型对象中获取数据,所以它必须是公共的。

    【讨论】:

    • 谢谢,但我试图隐藏我的数据模型,这样使用我的库的人就无法使用它们,所以我首选的方法是让我的布局私有。
    • 如果可能的话,我正在寻找的解决方案是使布局只能从我的库中访问。这样,我的库知道数据模块,而其他库不知道。问题是资源按原样捆绑在 AAR 上,并且可以从所有包含的项目中访问。这就是为什么我提到 public.xml 以使您的资源私有化。
    • 除非您编写所有这些库,包括。自己充气和数据绑定。使用 Android 提供程序组件有一些要求,这意味着模型必须公开您想要数据绑定的成员。也可以使用您的库从其他代码访问布局文件。我仍然认为没有问题 - 如果有人使用不在您图书馆的公共 api 中的东西,那么这就是他的问题。为什么要打扰?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多