原理
常规的web app 都会在android壳里创建web server 用于本地html等文件获取。这个web server 不是必要的,那些http请求也是不必要的,可以拦截浏览器的get请求代替。然后就没有web server的开销,没有了真实的http请求创建及解析开销。因为是拦截,所以可以把原来的域名(localhost)改成api的域名,然后跨域问题也没有了。
操作过程
浏览器拦截get请求,原启动路径假设为http://localhost/index.html 改成
https://apidomain/localfile/index.html,在app的壳(浏览器)拦截https请求返回本地的html等文件。
关键技术点
a. 在window使用CEF通过设置ChromiumWebBrowser.RequestHandler实现拦截
b.在android 通过继承WebViewClient重写ShouldInterceptRequest实现拦截