webdev-support / chrome_content_shell

63 stars 12 forks source link

安卓项目如何接入 #3

Open Geocld opened 4 days ago

Geocld commented 4 days ago

目前我的项目也有接入Chromium替代原生webview的计划,因为使用自带webview会有很多兼容问题,这个项目看着可以帮我省很多事,尤其是Chromium提取的相关工作。但由于我是Android开发新手,还不知道如何在自己的项目接入这个项目,是在项目中以源码的形式接入content_shell的源代码,然后在activity里按照demo目录初始化webview就可以了吗?

初次接触此类项目,还请作者不吝赐教,谢谢!

webdev-support commented 4 days ago

兄弟,看readme , 该项目只能作为demo, 有一些接口是没有实现的. 比如文件选择器. 但是项目是肯定能够跑得起的, 将源码下载下来后, 运行ContentShellActivity 就行了, 记得要下载release 中的.so , 然后 如果有问题请留言.

我们公司的商业项目就是自己移植的webview, 我一个人在搞, 前前后后搞了半年, 白天做其他需求,有时间就移植,晚上基本上最后一班公交, 每个周末都去公司, 持续了半年, 内心是崩溃, 遇到了很多问题, 但是没人能帮你. 但是我目前没有打算将webview 开源, 开源意味着要修复BUG, chromium webview 这种项目由开发者兼职时间来维护几乎不可能, 所以移植webview 就是一个耗费时间和精力的事情. 如果你自己移植webview 就要拿出勇气出来.

如果是商业项目, 请使用x5或者寻求商业上的webview 的支持. 如果是开源项目, 如果需要的话, 我这边可以提供geckoview 的全方面支持. 除了速度比chromium webview 慢点, 其他的都没问题.

Geocld commented 4 days ago

@webdev-support 谢谢你的回复,也很佩服你独立研究的能力!我是开源独立项目,主要功能是WebRTC和媒体流播放,因为会涉及一些webview比较旧的机型导致应用在这些机型上出现白屏或WebRTC协议不兼容的情况,因此也想借这个机会好好学习安卓端的webview机制,但我应该没有那么多精力亲自移植chromium webview,看你的描述我最佳方案是接入geckoview了。从你分享的最佳实践(https://github.com/webdev-support/webdev-support) 也学习到很多,接入geckoview我应该也会遇到很多问题待解决,期待你更多相关分享!

webdev-support commented 4 days ago

@webdev-support 谢谢你的回复,也很佩服你独立研究的能力!我是开源独立项目,主要功能是WebRTC和媒体流播放,因为会涉及一些webview比较旧的机型导致应用在这些机型上出现白屏或WebRTC协议不兼容的情况,因此也想借这个机会好好学习安卓端的webview机制,但我应该没有那么多精力亲自移植chromium webview,看你的描述我最佳方案是接入geckoview了。从你分享的最佳实践(https://github.com/webdev-support/webdev-support) 也学习到很多,接入geckoview我应该也会遇到很多问题待解决,期待你更多相关分享!

我的 github page 里面有 geckview 的 demo apk, 你可以试试一试, 我自己测试了,在低内存手机完全 ok, 经过优化后白屏的概率很少,在 bilibili 搜索 geckview 有我测试的视频,其中对比了多款 chromium 浏览器 和 firefox 浏览器对比,优化渲染模式后, geckview 也很优秀。

Geocld commented 3 days ago

看了使用GeckoView解决安卓平台碎片化的问题这篇文章,有下面几个疑问,还希望能解答下疑惑:

  1. 文中提到GeckoView还支持多进程架构,这意味着浏览器可以在单独的进程中运行,提高应用程序的性能和稳定性是集成了GeckoView自动到新进程运行还是需要做单独的配置?
  2. 增加动态下发GeckoView .so依赖,集成后可以包体积减少55MB这个是如何做到的,是否有demo可以参考下?
webdev-support commented 3 days ago

看了使用GeckoView解决安卓平台碎片化的问题这篇文章,有下面几个疑问,还希望能解答下疑惑:

1. 文中提到`GeckoView还支持多进程架构,这意味着浏览器可以在单独的进程中运行,提高应用程序的性能和稳定性`是集成了GeckoView自动到新进程运行还是需要做单独的配置?

2. `增加动态下发GeckoView .so依赖,集成后可以包体积减少55MB`这个是如何做到的,是否有demo可以参考下?
  1. geckoview 不用配置就是多进程.

  2. 动态下发.so , 通过firefox config配置来设置.so 的加载路径, env: MOZ_ANDROID_LIBDIR_OVERRIDE: "/sdcard/xxx" 即可实现

如果你所用的开源项目需要我网站的demo apk, 可以给我发邮件, 我这边可能要整理一下源码.