AndroidChromium
AndroidChromium copied to clipboard
Chromium升级内核
最近的稳定版本是56.0.2924.87,然后我看到了这个项目,也想尝试将此迁移为最新的稳定版本 但是发现有很多文件位置和依赖都有较大修改,有些库也被切割 所以想咨询一下作者,是否有更加详细的理论操作文档?想加入到移植中来
@novono 多谢参与。目前还只能使用旧版移植方案去做,新版的还在尝试。如果你有问题就把具体的问题贴出来一起解决。如果涉及到文件或类找不到,一般是临时文件,在out目录下搜索即可。
目前检索了out目录下的文件,下面这些jar应该是缺少的 android_data_chart_java android_webview_java device_battery_java device_bluetooth_java device_vibration_java dom_distiller_java external_video_surface_java invalidation_java invalidation_proto_java mojo_public_java mojo_system_java service_tab_launcher_java signin_core_browser_java
@novono 首先确认下是整个编译出了chrome.apk,然后在确认这些jar包是否是真的需要的,如果引用的类没什么作用就去除,再不行就在整个chromium工程里面搜索试试
OK,现在我是在用https://chromium.googlesource.com/chromium/src.git/+/master/docs/android_studio.md 这里的方法进行AS下的开发,大部分时候用的是脚本~
我也依据这个工程的思想找下依赖吧~
谢谢~
@novono 加油! 👍
@novono 最近代码已经升级到55内核,基于这个版本升级到56版本应该简单些,有问题随时沟通☺️
您好,我基于54和您的55版本去构建56,但是都会报“E/cr_tabmodel: State file does not exist.”的错误,然后apk就会崩溃。我查看是在TabPersistentStore.java中的startFetchTabListTask中报的,也就是"/data/data/org.chromium.chrome.browser/app_tabs/0/tab_state0"这个文件不存在造成的。如果我用我的工程编出来的apk直接覆盖您的工程编出来的apk,就没有上述问题,查看tab_state0那个文件也在,应该是在覆盖的时候这个文件没有被清除掉。我想请问您有遇到这类问题吗?
@rkshuai 升级版本的时候最好只采用一个版本去构建升级,或者基于54或者基于55,chromium文件太多容易造成混乱,如果class找不到就去chromium源码和out目录下去搜索,如果这样还找不到就解压生成的jar看看是否在里面。
嗯,我是指我在54和55上分别做了升级,但是都会报“E/cr_tabmodel: State file does not exist.”,请问您那边有这样的问题吗?
@rkshuai 没有
找到问题的原因了,56代码已经抽出,感谢你的贡献。
棒👍,如果可以记得提交PR
你编译出来的chromium能播放视频吗?
@rkshuai 目前播放视频还有点问题
哈哈,现在视频能播放了。
@rkshuai 怎么解决的?直接升到了56内核吗?记得提交代码😃
不是的,和哪个内核版本没关系,设置一些编译选项就行了
@rkshuai 好,尽快把解决方案和代码提交下👍
@rkshuai请问如何才能解决视频能播放的问题?
@JackyAndroid 非常感谢~~~ 最近开始做瘦身了,从源码下看依赖,发现里面有大量硬件等等相关的内容,但是实际上我们一般应用场景里面应该很少需要这些功能~~ 这部分挺有趣的~~哈哈哈~~
@novono 好的,如果有比较好的依赖方案和瘦身记得提交出来,分享给大家👍
好咧~
@rkshuai 你好,我在 58 版本上遇到了相同的错误
E/cr_tabmodel: State file does not exist.
请问你怎么解决的?
这是我导出的项目:https://github.com/kuoruan/Chromium-Android
已解决,新版多了个 webapk1.dex 文件,放到 assets 下即可
@rkshuai 还是有问题 😢 现在能进去了,但是还是报
E/cr_tabmodel: State file does not exist.
第一次进入浏览器能正常打开网页,后面几次就不行了
05-23 16:15:05.257 14631-14631/org.chromium.chrome A/chromium: [FATAL:compositor_impl_android.cc(625)] **Timed out waiting for GPU channel.**
05-23 16:15:05.437 14631-14631/org.chromium.chrome W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
05-23 16:15:05.437 14631-14631/org.chromium.chrome W/google-breakpad: Chrome build fingerprint:
05-23 16:15:05.437 14631-14631/org.chromium.chrome W/google-breakpad: 1.0
05-23 16:15:05.437 14631-14631/org.chromium.chrome W/google-breakpad: 1
05-23 16:15:05.437 14631-14631/org.chromium.chrome W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
05-23 16:15:05.437 14631-14631/org.chromium.chrome A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 14631 (chromium.chrome)
@kuoruan 我最后发现不是这个问题,是资源文件的问题。 因为BuildConfig.java在chromium56和之前的版本不同。新版本中增加了两个变量COMPRESSED_LOCALES和 UNCOMPRESSED_LOCALES,我们需要将COMPRESSED_LOCALES数组置空,而将UNCOMPRESSED_LOCALES数组置为”en-US”, ”zh-CN”(反之也行)。
@hulpi 在args.gn中添加 proprietary_codecs=true ffmpeg_branding="Chrome" 即可
@rkshuai https://github.com/kuoruan/Chromium-Android/blob/master/app/src/main/java/org/chromium/base/BuildConfig.java 已加,无效。。。
@kuoruan 在assets中添加en-US.pak和zh-CN.pak两个资源文件,我是针对56版本的(并不是针对E/cr_tabmodel: State file does not exist.,这句基本上每个版本都会打印,但不影响程序运行)