WebView не может получить доступ к android_res, но android_asset работает - PullRequest
0 голосов
/ 04 марта 2020

У меня есть два варианта моего приложения, на которых я тестирую, debug и release.

Я следовал этому методу: Использовать пользовательский шрифт из res / font с WebView in Android

Мой код выглядит так -

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);

Я получаю эту ошибку:

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)

Когда я добавляю файлы шрифтов в ресурсы и замените android_res на android_asset, все работает.

Proguard запускается при выпуске, а не при отладке, так что это не должно быть источником проблем. Я никоим образом не изменяю свой applicationId или packageName для отладки или выпуска.

Что я могу сделать здесь?

...