Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chromium升级内核 #21

Open
novono opened this issue Feb 17, 2017 · 37 comments
Open

Chromium升级内核 #21

novono opened this issue Feb 17, 2017 · 37 comments

Comments

@novono
Copy link

novono commented Feb 17, 2017

最近的稳定版本是56.0.2924.87,然后我看到了这个项目,也想尝试将此迁移为最新的稳定版本
但是发现有很多文件位置和依赖都有较大修改,有些库也被切割
所以想咨询一下作者,是否有更加详细的理论操作文档?想加入到移植中来

@JackyAndroid
Copy link
Owner

@novono 多谢参与。目前还只能使用旧版移植方案去做,新版的还在尝试。如果你有问题就把具体的问题贴出来一起解决。如果涉及到文件或类找不到,一般是临时文件,在out目录下搜索即可。

@novono
Copy link
Author

novono commented Feb 17, 2017

目前检索了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

@JackyAndroid
Copy link
Owner

@novono 首先确认下是整个编译出了chrome.apk,然后在确认这些jar包是否是真的需要的,如果引用的类没什么作用就去除,再不行就在整个chromium工程里面搜索试试

@novono
Copy link
Author

novono commented Feb 17, 2017

OK,现在我是在用https://chromium.googlesource.com/chromium/src.git/+/master/docs/android_studio.md
这里的方法进行AS下的开发,大部分时候用的是脚本~

我也依据这个工程的思想找下依赖吧~

谢谢~

@JackyAndroid
Copy link
Owner

JackyAndroid commented Feb 17, 2017

@novono 加油! 👍

@JackyAndroid
Copy link
Owner

@novono 最近代码已经升级到55内核,基于这个版本升级到56版本应该简单些,有问题随时沟通☺️

@rkshuai
Copy link
Contributor

rkshuai commented Mar 8, 2017

您好,我基于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那个文件也在,应该是在覆盖的时候这个文件没有被清除掉。我想请问您有遇到这类问题吗?

@JackyAndroid
Copy link
Owner

@rkshuai 升级版本的时候最好只采用一个版本去构建升级,或者基于54或者基于55,chromium文件太多容易造成混乱,如果class找不到就去chromium源码和out目录下去搜索,如果这样还找不到就解压生成的jar看看是否在里面。

@rkshuai
Copy link
Contributor

rkshuai commented Mar 8, 2017

嗯,我是指我在54和55上分别做了升级,但是都会报“E/cr_tabmodel: State file does not exist.”,请问您那边有这样的问题吗?

@JackyAndroid
Copy link
Owner

@rkshuai 没有

@rkshuai
Copy link
Contributor

rkshuai commented Mar 9, 2017

找到问题的原因了,56代码已经抽出,感谢你的贡献。

@JackyAndroid
Copy link
Owner

棒👍,如果可以记得提交PR

@rkshuai
Copy link
Contributor

rkshuai commented Mar 13, 2017

你编译出来的chromium能播放视频吗?

@JackyAndroid
Copy link
Owner

@rkshuai 目前播放视频还有点问题

@rkshuai
Copy link
Contributor

rkshuai commented Apr 10, 2017

哈哈,现在视频能播放了。

@JackyAndroid
Copy link
Owner

@rkshuai 怎么解决的?直接升到了56内核吗?记得提交代码😃

@rkshuai
Copy link
Contributor

rkshuai commented Apr 10, 2017

不是的,和哪个内核版本没关系,设置一些编译选项就行了

@JackyAndroid
Copy link
Owner

@rkshuai 好,尽快把解决方案和代码提交下👍

@hulpi
Copy link

hulpi commented Apr 19, 2017

@rkshuai请问如何才能解决视频能播放的问题?

@novono
Copy link
Author

novono commented Apr 24, 2017

@JackyAndroid 非常感谢~~~
最近开始做瘦身了,从源码下看依赖,发现里面有大量硬件等等相关的内容,但是实际上我们一般应用场景里面应该很少需要这些功能~~
这部分挺有趣的哈哈哈

@JackyAndroid
Copy link
Owner

@novono 好的,如果有比较好的依赖方案和瘦身记得提交出来,分享给大家👍

@novono
Copy link
Author

novono commented Apr 24, 2017

好咧~

@kuoruan
Copy link

kuoruan commented May 23, 2017

@rkshuai 你好,我在 58 版本上遇到了相同的错误

E/cr_tabmodel: State file does not exist.

请问你怎么解决的?

@JackyAndroid JackyAndroid changed the title 56.0.2924.87的升级可能 Chromium升级内核 May 23, 2017
@kuoruan
Copy link

kuoruan commented May 23, 2017

这是我导出的项目:https://github.com/kuoruan/Chromium-Android

@kuoruan
Copy link

kuoruan commented May 23, 2017

已解决,新版多了个 webapk1.dex 文件,放到 assets 下即可

@kuoruan
Copy link

kuoruan commented May 23, 2017

@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)

@rkshuai
Copy link
Contributor

rkshuai commented May 31, 2017

@kuoruan 我最后发现不是这个问题,是资源文件的问题。
因为BuildConfig.java在chromium56和之前的版本不同。新版本中增加了两个变量COMPRESSED_LOCALES和 UNCOMPRESSED_LOCALES,我们需要将COMPRESSED_LOCALES数组置空,而将UNCOMPRESSED_LOCALES数组置为”en-US”, ”zh-CN”(反之也行)。

@rkshuai
Copy link
Contributor

rkshuai commented May 31, 2017

@hulpi 在args.gn中添加
proprietary_codecs=true
ffmpeg_branding="Chrome"
即可

@kuoruan
Copy link

kuoruan commented May 31, 2017

@rkshuai
Copy link
Contributor

rkshuai commented May 31, 2017

@kuoruan 在assets中添加en-US.pak和zh-CN.pak两个资源文件,我是针对56版本的(并不是针对E/cr_tabmodel: State file does not exist.,这句基本上每个版本都会打印,但不影响程序运行)

@kuoruan
Copy link

kuoruan commented Jun 7, 2017

@rkshuai 问题已解决,将 snapshot_blob.bin 改名为 snapshot_blob_32.bin,然后改一下 ResourceExtractor.java 即可。
59 版本已测试通过,所有功能正常

@JackyAndroid
Copy link
Owner

@kuoruan 如果解决了相关问题,欢迎提交PR,这样项目才会越来越稳定

@kuoruan
Copy link

kuoruan commented Jun 7, 2017

@JackyAndroid 我没有用生成的 Jar 包,全部都是从 src 里边拷贝的 java 源文件。
有好多多余的源码文件没删,导出项目在我的 GitHub 上。

@JackyAndroid
Copy link
Owner

@kuoruan 没关系,我也建议全部使用源码替换jar,然后根据各个的模块的resource放入相应的源码,这样是最好的方式,不过现在我这边还没多余时间去重构

@rkshuai
Copy link
Contributor

rkshuai commented Jun 8, 2017

@kuoruan 👍 我也是分析ResourceExtractor.java和ResourceBundle解决的问题,这些文件决定加载资源文件的方式,Chromium版本升级的时候这个文件通常会发生变化。所以要针对不同版本采用不同的处理方式。
再见了各位同仁,以后不搞浏览器了,祝你们芝麻开花节节高。

@hellomsg
Copy link

@JackyAndroid 我没有用生成的 Jar 包,全部都是从 src 里边拷贝的 java 源文件。 有好多多余的源码文件没删,导出项目在我的 GitHub 上。

难道需要手动copy代码创建工程吗?看样子很难呢,我以为这个方法可以直接导出项目😭️ https://chromium.googlesource.com/chromium/src/+/master/docs/android_studio.md

@hellomsg
Copy link

@kuoruan @JackyAndroid 两位能不能分享一下怎么用源码创建这个工程吗?这个版本太老了,我想创建一个最新版本的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants