2017-08-08 83 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規則將包含應用程序代碼和所有依賴項的規則。