在我的Android项目中,我将一些图像存储在res / drawable /中,这些图像可以从Webview中加载的HTML文件中通过only访问。例如(HTML代码):
<img src="file:///android_res/drawable/myfriend.png">
[这些图像在优化过程中被Proguard从apk中删除。
有人知道保留这些文件的方法吗(即使它们没有在Java代码中直接使用)?
我有一个类似的问题,只想补充一点。
ProGuard不会剥离资源。如果您仅解压缩apk,您将看到图像文件仍然存在。
问题是,Webkit FileLoader将尝试使用反射来加载R $ drawable类。如果您没有在proguard.cfg文件中添加任何保留规则,则该类将被重命名,因此Webkit将无法加载您的资源。
通过将文件放入资产文件夹,您将绕过R类系统,一切正常。
例如,如果您想为不同的密度使用不同的资源,这不是解决方案。
我建议您仅添加一个非常基本的keep规则来保留R内部类和字段:
-keepclassmembers class **.R$* {
public static <fields>;
}
-keep class **.R$*
我将图像移到解决了我的问题的'assets'文件夹:
<img src="file:///android_asset/myfriend.png">
对于本地化的简单html(无链接的本地化本地文件/图像)
将此Proguard规则用于原始文件夹:
-keep class com.example.appname.R$raw { *; }
WebView示例网址:
file:///android_res/raw/filename.html
示例文件夹结构:
res / raw / filename.html
res / raw-en / filename.html
res / raw-hu / filename.html