Closed senda58 closed 1 year ago
看不懂。在sample里复现一下吧。
宿主加载插件资源 loadURL时 URL为 file:///data/user/0/宿主包名/app_www/index.html 有这个,但是提示找不到
下图是data/data/包名 下的文件
@shifujun
但是提示找不到
你截图里清清楚楚的写着net::ERR_ACCESS_DENIED
,哪有找不到的提示?
你的代码似乎是私有代码,建议跟你的同事们交流。开源项目技术交流要建立在开源代码的基础上。
好
插件用的混合开发移动框架cordova,在应用启动后,插件逻辑自动将asstes下文件迁移到了自定义的路径下了,比如data/user/0/插件包名/app_www/index.html ,这样插件webview加载的路径就由 file:///android_asset/www/ 变成了file:///data/user/0/插件包名/app_www/index.html 。 这样宿主加载插件时,webview加载的资源路径为:file:///data/user/0/宿主包名/app_www/index.html ,就会报此路径找不到的错误。
上述错误,我分析了一下 其实,在我调试的手机上 data/user/0/ 是不存在的,我调试的手机路径为 data/data/宿主包名/app_www/index.html ,这个路径是有的,看来是手机不同,绝对路径的不同导致的。
我插件的运行目录使用的是: cContext.getDir("www", cContext.MODE_PRIVATE).getAbsolutePath(); 而在我宿主加载插件时:shadow 拷贝文件到data 目录使用的是 context.getFilesDir() ,
所以正常加载资源文件的路径应该是cContext.getDir("www", cContext.MODE_PRIVATE).getAbsolutePath() 才会没问题,而此路径就是data/data/宿主包名/app_www/
而我用手机调试时 context.getFilesDir() 拿到的值确实是 data/user/0/包 这个路径,而我看我的手机根本没有这个路径,这个是咋回事呢?
@shifujun 麻烦大佬帮忙看看