Android 防止Proguard移除特定的牵引物
在我的Android项目中,我有一些存储在res/drawable/中的图像,它们只能从Web视图中加载的HTML文件中访问。例如(HTML中的代码):Android 防止Proguard移除特定的牵引物,android,optimization,proguard,drawable,Android,Optimization,Proguard,Drawable,在我的Android项目中,我有一些存储在res/drawable/中的图像,它们只能从Web视图中加载的HTML文件中访问。例如(HTML中的代码): 这些图像在优化过程中由Proguard从apk中删除。 有人知道保存这些文件的方法吗(即使它们没有直接在java代码中使用)?我将图像移动到“资产”文件夹中,解决了我的问题: <img src="file:///android_asset/myfriend.png"> 我遇到了类似的问题,只想添加一些位 ProGuard不会剥
这些图像在优化过程中由Proguard从apk中删除。
有人知道保存这些文件的方法吗(即使它们没有直接在java代码中使用)?我将图像移动到“资产”文件夹中,解决了我的问题:
<img src="file:///android_asset/myfriend.png">
我遇到了类似的问题,只想添加一些位 ProGuard不会剥夺这些资源。 如果您只是解压缩您的apk,您将看到图像文件仍然存在 问题是Webkit文件加载器将尝试使用反射加载R$drawable类。如果不向proguard.cfg文件添加任何保留规则,则该类将被重命名,因此Webkit将无法加载资源 通过将文件放入assets文件夹,您将绕过R类系统,一切都将正常工作 例如,如果您想要为不同的密度使用不同的资源,这不是一个解决方案 我建议您只需添加一个非常基本的keep规则来保留R内部类和字段:
-keepclassmembers class **.R$* {
public static <fields>;
}
-keep class **.R$*
-keepclassmembers类**.R$*{
公共静态;
}
-继续上课**$*
用于本地化简单HTML(无链接的本地化本地文件/图像)
对原始文件夹使用此Proguard规则:
-keep class com.example.appname.R$raw { *; }
WebView的Url示例:
file:///android_res/raw/filename.html
文件夹结构示例:
res/raw/filename.html
res/raw en/filename.html
res/raw hu/filename.html
您应该将这些类型的文件放入资产文件夹,并像mWebView.loadUrl(“file:///android_asset/myfriend.png");你说得对。我将图像移动到“资产”文件夹,解决了我的问题。上面的一行变成:生成签名apk时在proguard cfg中给出异常
-keep class com.example.appname.R$raw { *; }