2013-02-07 38 views
1

ProGuard的是殺死我的消息像一個:的Android ProGuard,並將庫項目

「[proguard的]警告:類[Facebook的/ bin中/班/ COM/Facebook的/內部/ FileLruCache $ StreamHeader.class]意外含有類[com.facebook.internal.FileLruCache $ StreamHeader]」

和最後的警告是:

[proguard的]警告:有332班錯誤命名文件。 [proguard]你應該確保所有文件名都對應 它們的類名。 [proguard]目錄層次結構必須 對應於程序包層次結構。 [proguard]如果你 不介意提到的類沒有被寫出,[proguard]
你可以試試你的運氣使用'-ignorewarnings'選項。

對我來說似乎我沒有調整我正在使用的圖書館項目(如臉書)與proguard。

我真的不想混淆的lib項目,但該行

-keep類com.facebook ** {*。 }

-keep interface com.facebook。** {*; }

不會做的伎倆。

你能指教一下嗎? 謝謝

回答

0

參照。 ProGuard手冊>故障排除>Warning: class file ... unexpectedly contains class ...

看起來您的配置包含一個-injars選項,它不指向包和類的根目錄(.../facebook/bin/classes)。

但是,標準的Android構建過程已經爲您指定了所有必需的-injars選項,因此您不應該添加任何內容。

+0

嗯,那不是罐子,它來作爲圖書館項目。我應該如何指定? – Danail

0

好吧,我在proguard配置文件中使用了很多-dontwarn選項。另外,我不會混淆任何不在我的主包(-keepclass!com.yyy。** {*;}和keepinterface中)的東西。這似乎很好地工作。

+0

這樣的設置保留了主包中的所有類,字段和方法(使用它們的原始名稱),因此您可能需要對其進行優化以實現更好的縮小/優化/混淆。 –

+0

這個想法是保存我的主包以外的所有東西。 – Danail

+0

你是對的;我錯過了感嘆號。它仍然可以被改進,但如果它起作用,這是一個好的開始。 –