I have two flavors of my app that I am testing on, debug
and release
.
I was following this method: Use custom font from res/font with WebView in Android
My code looks like this -
static String prefix = "<html> <head> <style type=\"text/css\"> @font-face{font-family: \"MyFont\"; src: url(\"file:///android_res/font/myfont_black.otf\"); font-weight: 900;}@font-face{font-family: \"MyFont\"; src: url(\"file:///android_res/font/myfont_bold.otf\"); font-weight: 700;}@font-face{font-family: \"MyFont\"; src: url(\"file:///android_res/font/myfont_medium.otf\"); font-weight: 500;}@font-face{font-family: \"MyFont\"; src: url(\"file:///android_res/font/myfont_regular.otf\"); font-weight: 400;}body{font-family: \"MyFont\", serif;}</style> </head> <body>";
static String postfix = "</body></html>";
String htmlData = prefix + content + postfix;
webView.loadDataWithBaseURL(null, htmlData, "text/html", "UTF-8", null);
I'm getting this error:
E/AndroidProtocolHandler: Unable to open resource URL: file:///android_res/font/myfont_bold.otf
java.lang.ClassNotFoundException: Didn't find class "com.myapp.myapp.R$font" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.myapp.myapp-7loRKzOqm1cCyirmLXvx3g==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp-7loRKzOqm1cCyirmLXvx3g==/lib/arm64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at hf2.findClass(PG:2)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.chromium.android_webview.AndroidProtocolHandler.a(PG:2)
at org.chromium.android_webview.AndroidProtocolHandler.b(PG:3)
at org.chromium.android_webview.AndroidProtocolHandler.b(PG:24)
at org.chromium.android_webview.AndroidProtocolHandler.open(PG:9)
When I add the font files to assets and replace android_res
with android_asset
, everything works.
Proguard runs on release, not debug, so that should not be the troublemaker. I am not changing my applicationId or packageName in any way for debug or release.
What can I do here?