Proguard混淆了具有共同DTO的libary和App

时间:2017-08-08 16:20:54

标签: android build proguard obfuscation

我要混淆我的库,它有一些带有app的Common DTO。我的应用程序使用此DTO。 我创建了两个包含其他设置的 proguard-rules 文件。

好的是这种情况:

  1. 当我使用构建变体运行应用程序 - >"发布"和lib-> " debug",app无法识别来自web api的任何加载的lib DTO。这似乎正常导致应用程序缩小,而lib则不然。所以他们不能用同一个DTO进行交流。
  2. 但是当我选择了两种构建变体 - > "发布",在编译时错误来自应用程序无法识别库DTO。消息是:Error:(23, 41) error: package com.testlib.model.DTO does not exist但它确实存在。
  3. 我必须定义一个共同的规则 - 规则吗?这样的事情?

1 个答案:

答案 0 :(得分:0)

你不应该以这种方式在Android中使用Proguard。

如果要在将该库导出到其他人之前保护某些库(例如:在发布之前使用proguard处理Google服务),则必须保持所有公共API不被混淆(例如,在您的情况下使用公共DTO)。但由于您的库模块不适合外部使用,您可能根本不想使用Proguard处理它。

如果您想保护生成的应用,只需将Proguard应用于生成的应用。您根本不必将其应用于其他模块。在编译应用程序模块的过程中,Android构建工具将所有依赖项集合在一起,并立即将Proguard应用于所有这些工具,包括应用程序代码和库代码。因此,您的应用程序proguard规则将包含应用程序代码及其所有依赖项的规则。