2014/01/03

Proguard を使うと res/raw に "file:///android_res/raw/xxx" でアクセス出来なくなってしまう

Android の res/raw ディレクトリは URI を使ってアクセスすることが出来ます。
以下のように WebView に読み込ませたい場合などは便利です。

WebView webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("file:///android_res/raw/index.html");

しかし、Proguard を使用すると、上記の記述でアクセスすることが出来なくなってしまいます。
こういう場合は、proguard-project.txt に以下の記述を加えれば回避できます。

proguard-project.txt
-keep class **.R$*
-keepclassmembers class **.R$raw

ただし、この方法では res/raw 以下のファイル名全てがそのまま残りますのでご注意を。
特定のファイルだけ残したい場合は以下の Stack Overflow のようにすれば可能です。