3

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?

Aakash Choubey
  • 426
  • 3
  • 19

0 Answers0