2017-05-31 90 views
1

由於Butterknife使用反射來生成與每個使用的activityfragment關聯的類。因此Proguard會忽略這些類,並且不會在其規則中對其進行混淆。具有Butterknife的Proguard可防止對名稱造成混淆

發現一個解決方法是使用Butterknife生成的類替換ButterKnife.bind(this)與新的Whatever_ViewBinder(this)並在我的代碼中使用它們。它工作和Progurad混淆我的課程。但唯一的問題是我必須將它們從Debug文件夾複製到我的軟件包中以進行更改/刪除。並在每次添加/刪除視圖時進行更新。 source

另一個問題,我發現哪個說它更好地使用數據綁定,而不是Butterknife vs Data Binding。但它現在太晚了,我要改變整個代碼

請分享,如果你會發現任何解決這個問題。 我正在使用Butterknife v8.6.0。如果這有任何幫助

+0

如果您不從調試文件夾複製,會出現什麼問題? –

+0

試試這個答案:https://stackoverflow.com/a/44199166/3280468 –

回答

1

你甚至連自己的答案與#746

[...]直到我從班級中刪除所有進口的黃油刀,Proguard無法使用它。

這是因爲Proguard規則直到版本9.0都提供了Butter Knife本身。

當使用生成的 代碼API變得穩定時,ProGuard規則將在9.0中分離。

所以基本上不可能輕易做到你打算做的事情。最好的是叉黃油刀,並從build.gradle刪除consumerProguardFiles定義。然後等待版本9.0被釋放,然後再次使用原件。

+0

我想這是目前唯一的選擇。如果這不起作用,讓我們繼續保持對v9的期望。不管怎麼說,多謝拉 –