2011-06-08 21 views
13

在我的Android項目中,我有一些圖片存儲在res/drawable /中,這些圖片從Web瀏覽器中加載的HTML文件訪問只有。例如(在HTML代碼):防止Proguard刪除特定的可繪製對象

<img src="file:///android_res/drawable/myfriend.png"> 

這些圖像由Proguard的優化過程中被除去從APK。

有人知道一種方法來保留這些文件(即使它們不直接在java代碼中使用)嗎?

+1

你應該把這些類型的文件到你的資產的文件夾,並加載像mWebView.loadUrl(「文件:/ //android_asset/myfriend.png「); – 2011-06-08 14:33:48

+0

你是對的。我將圖片移至「資產」文件夾,解決了我的問題。上面的行變成: Gilbou 2011-06-08 14:54:49

回答

1

我感動的圖像,這解決了我的問題「資產」文件夾:

<img src="file:///android_asset/myfriend.png"> 
22

我也有類似的問題,想增加短短位。

資源不會被ProGuard剝離。 如果你只是解壓縮你的apk,你會看到圖像文件仍然存在。

問題是Webkit FileLoader會嘗試使用反射來加載您的R $ drawable類。如果您沒有將任何keep規則添加到您的proguard.cfg文件中,該類將被重命名,因此Webkit將無法加載您的資源。

通過將文件放置到資產文件夾中繞過R類系統,一切都將工作。

這不是一個解決方案,但是,例如,如果您想要爲不同的密度使用不同的資源。

我建議你只需添加一個非常基本保持規則保存[R內部類和字段:

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

-keep class **.R$* 
+0

在生成簽名的apk時給予proguard cfg異常 – 2016-03-17 07:40:42