if you intend to distribute the app via play, it has to target
sdk30. so that solves problem #1. if you use another
distribution source, then you can probably set the target
sdk to whatever you want, and all your problems are
solved.
the workaround which involves using webview.loadhtml()
relies on concatenating the files necessary to construct
a web page, eg, with a stringbuilder. this is exactly how a
web browser functions in reality: the end result is a giant
string of bytes which is rendered as a "page". instead
of the browser's loading each resource (html, css, js, jpg)
one by hand and rendering the page, here, you add all the
files into a big string and load it all at once into the webview
using webview.loadhtml( stringbuilder.tostring ).
others seem to understand how to do it (eg, the guy in the
post above yours), i'm sure you can grasp the concept too.
i'm not saying it's pretty.
keeping files in file.direxternal is out. from google's point
of view, this is a security risk: a malicious app can easily
see what's there. frankly, a malicious enough app can
probably see whatever it wants to see, but i'm just the
messenger here.
i only know what an .obb file is, not what happens to it once
copied into the app's space on disk. i don't know how it
appears to the app or how one goes about loading some
resource therein. you'll have to test it.