2017-08-08 75 views
0

我将混淆具有应用程序的一些Common DTO的库。我的应用使用这个DTO。 我创建了两个proguard规则文件,其中包含每个其他设置。Proguard混淆库和具有常见DTO的应用程序

确定这是情况:

  1. 当我运行构建变量的应用程序 - >“释放”和lib->“调试”,应用程序不承认我是从网上API和无疾而终的lib DTO负载。这似乎是正常的原因应用程序被缩小和lib不是。所以他们不能用同一个DTO进行研究。
  2. 但是,当我同时选择了build variant->“release”时,在编译时错误是应用程序无法识别库DTO。消息是:Error:(23, 41) error: package com.testlib.model.DTO does not exist但它确实存在。

我必须定义一个通用的proguard-rules oe这样的东西吗?

+0

我删除您的评论下面https://stackoverflow.com/a/38042098/229044。不要在其他人的问题或答案下留下评论,要求他们来查看你的帖子。这是你最后的警告,下次你这样做时你会被暂停。 – meagar

+0

@meagar为什么你删除我的评论?哪个对?写在哪里我不能把链接到我的问题?如果该法律存在堆栈溢出,请告诉我。 – Kenji

+0

是的。既然您想要第二个意见,我可以证实:评论帖子要求其他人查看您的问题或答案被视为垃​​圾邮件。这里不受欢迎。评论将被删除,如果你不停止,暂停是可能的。 –

回答

0

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

如果你想导出之前,以保护一些库,库中的其他人(例如:谷歌服务与发布之前ProGuard的处理),你必须把所有的公共API从模糊处理(如你的情况公开的DTO) 。但由于您的图书馆模块不适合外部使用,因此您可能不想使用Proguard进行处理。

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