crosswalk-project/crosswalk

Upgrade to chrome 60

v3ss0n opened this issue Β· 155 comments

@rakuco Very nice to see crosswalk project moving onwards.

Can we upgrade crosswalk to chrome59 directly? It have many improvements : especially 20% average performance improvments for android.

Erm, I don't think anyone has been working on Crosswalk for several months now, I only landed a patch or two to make sure it is still possible to check out the source code. Changing Chromium versions was one of the hardest parts of maintaining the project, so I don't think that's going to happen any time soon.

should we try that? From the guides it seems quite straight forward for updating to downstream .
https://github.com/crosswalk-project/crosswalk-website/wiki/Downstream-Chromium

You're more than welcome to try :-) You should look at https://github.com/crosswalk-project/crosswalk-website/wiki/Rebasing-our-forks instead though.

thanks , sorry i was looking at wrong link.
I will give a try , had you tried before?

Until Crosswalk stopped being maintained, yes.

i am sorry , i thought it was not very hard .. are you interested to do if community can fund your effort?

Not really, sorry, I already have a pretty demanding full-time day job :-)

If anyone want to do that ? I will setup a bounty source.

Chrome 60 has landed! It even has WebAssembly!

I've spent a bit of time trying to get it rebased to Chrome 60. I ended up spawning a 32 vCPU Compute Engine Virtual Machine on Google to make compiling things faster. I've made progress, but it's still error after error and seems like it requires quite a bit of inside knowledge to really get it debugged and working.

Wow , thank you so much @mcfarljw ,
There would be companies who would love to pay for your work , i would too .
Can you set up a https://www.patreon.com/ or indiegogo or bountysource ? I am going to attract other companies who i know using xwalk too.

I'll post back with more information later this coming week. If I feel that I've got enough of a "proof of concept" then I'll get a funding source created for those of you who want to help out. Right now I've just been adjusting things, but that has involved a lot of changes that I don't fully understand or commenting things out with notes just to keep the build process moving.

i think people from the mailing list can help , some developers still respond there .

@mcfarljw any update on this ? if prototype is ready should start for sourcing.

When will update?

Hello all. We're continuing to move xwalk forward and are almost complete with v59 merge. We'll tackle v60 after that. Anyone else who would like to co-ordinate work please let us know. Also, we can sponsor build infrastructure for this as well. Reach out on github or hello@tenta.com.

Very good , what kind of help needed let us know .

Sorry for the delayed reply. My biggest issue has been getting things structured in a way that allows for quickly making and testing my changes. It's not quite as friendly as using hot reloading with webpack 😺

@jwriteclub I've just connected up with you via email.

awesome thanks guys for working together , good!!

loving your work, we would be very interested in the update and assisting however we can @jwriteclub I have dropped you an email

It's great you are stepping in here. We made the switch from Crosswalk to the native WebView and run into the issue of the many many non Google zertified phones out there (often from china, because the Google Services are not available there), that come with a customized WebView that is not updated throught the Play Store. Even recent phones as the UMI Z on Android 7.0 have a Chromium 52 WebView, but the biggest problem are Android 5 and 6 phones with even older WebViews.
I believe until that is fixed, there still is a need for crosswalk and it is really great that you guys are stepping in. If there is a way to assist or if you have anything to share, for example when the v59 branch you have is ready to use, drop us a line!

Thats is the main reason we cannot drop crosswalk , not in near future , may be forever.
Thank you very much for continuing the work , please keep us posted.

I'm so excited to see crosswalk staying up to date. I just wanted to thank you all for your contributions to this amazing project!

how its going @jwriteclub @mcfarljw ??

See this fork to stay up to date with the chrome version: https://github.com/Arva/cordova-plugin-crosswalk-webview

Nilos commented

Did not find any code in that fork that updates the chrome version.

@Karolusrex what it is about? thats nothing to do with crosswalk but only to do with cordova crosswalk .

Oh yeah right, it's cordova specific. It will automatically use the built-in WebView if newer version is detected, otherwise use crosswalk. Thought it could come in handy for anyone using cordova and trying to have a newer version of Chrome.

@Karolusrex I like it, but one of the big problems is that although the version of Chrome might be newer you still can't develop for any specific version.

@v3ss0n Not much progress has been made on my part. I have put numerous weekend hours into it, but it is complex and compilation times are slow when testing. I sent @jwriteclub an email back in the day but haven't heard back from them about their progress on the project.

@mcfarljw @jwriteclub if we raise funding , can you guys start working on this? May be to latest chrome?
How much should we raise? I can afford about 1000$

After looking at my previous work trying to rebase the project I don't think this is something someone without extensive knowledge of the chromium for android content shell or crosswalk (probably both) will be able to accomplish in a reasonable amount of time. I hope I'm wrong and will keep poking around hoping for a quick breakthrough, but already have a full time job and can't allot the amount of time required to this project right now.

@rakuco can you help us? we could raise funds.

Hey @rakuco , I'm trying to learn about the process and to update it myself,
I've followed the instructions at the rebasing tutorial, but I came across a few problems, and would appreciate your guidance. Please tell me if I did something wrong or what can I do to continue on the project.

What I've done is forked chromium-crosswalk, v8-crosswalk, crosswalk and libpxc,
I've followed the instructions on creating the branches and upstream branches, now I have this directories:
~/xwalk
~/chromium-crosswalk
~/v8-crosswalk
~/libpxc

I've updated VERSION and DEPS.xwalk files, in DEPS.xwalk I've updated the chromium, v8 and buildtools revs, the crosswalk git and the libpxc rev.

Now trying to continue and following the instructions makes all kinds of errors, I'm trying to gclient sync and it says there's no .gclient, i'm trying all sorts of stuff but I'm not sure if I'm doing it correctly.

I think the directories should be one inside the other, i.e. xwalk and v8 should be in chromium-xwalk, is that right?
I also didn't understand how to create the .gclient or .gclient-xwalk files, is there a special command for it?
Is there something not in the rebasing tutorial that should be done, especially if I created a new machine for it, and did exactly as said?

I would appreciate any directions, tutorials, articles, links I can use and learn from.

Thanks!

I am interested in it. i think we should email to crosswalk mailing list , there are more maintainers there : https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-dev

@jwriteclub @mcfarljw can you check with @NaNgets , since he is willing to help , or keep on continuing what you left off.

i can't see crosswalk current chrome version? is that chrome 53? My authentication with cookie login cannot work with chrome 63 below :( please, someone help to update this project. it beautiful and necessary, I can support money to someone continue working on this project.

Now trying to continue and following the instructions makes all kinds of errors, I'm trying to gclient sync and it says there's no .gclient, i'm trying all sorts of stuff but I'm not sure if I'm doing it correctly.

I think the directories should be one inside the other, i.e. xwalk and v8 should be in chromium-xwalk, is that right?
I also didn't understand how to create the .gclient or .gclient-xwalk files, is there a special command for it?
Is there something not in the rebasing tutorial that should be done, especially if I created a new machine for it, and did exactly as said?

You have to start from https://crosswalk-project.org/contribute/building_crosswalk/linux_build.html, which contains all the information you need about gclient & co. It is better to familiarise yourself with the directory infrastructure (which is basically identical to Chromium's) before attempting to do any rebasing.

what about raising fund? do you have any idea, sir?

No, I'm not involved in any funding efforts.

Excellent, thank you, I'll try working on it a bit more on the weekend.
I started going through the source code, it's really complex so I hope I'll get the grip on it soon.

Will poke when I have updates.
Thanks!

@hiepxanh i think we better pay directly to the contributors.

@NaNgets I don't recommend jumping to Chrome 60 directly because so many things have changed and too much is broken. It might be easier to get Chrome 54 working, fix issues and then increment version by version.

Ok, i'll try a few things.

By the way, why is it always a few versions back? Why shouldn't it be aligned with the chromium webview's version?

there are many custom patches , and things to make integration with cordova possible.

@NaNgets It could be aligned with the latest chromium stuff, but this ticket was created more than half a year ago. Just getting it rebased to 60 would be a huge accomplishment. The original crosswalk development team always developed a version or two behind the current chromium release for stability reasons I think.

ok so some update:
I got exhausted from my machine and the slow builds so I set up a server on AWS, somewhat like @mcfarljw did on google, it was really faster :)

I managed to fetch and build, however, when trying to execute ./xwalk ~/crosswalk-samples/hello-world/manifest.json I got this:

~/xwalk/src/out/Default/nacl_helper: error while loading shared libraries: libffmpeg.so: cannot open shared object file: No such file or directory
[1:1:0223/121245:ERROR:nacl_fork_delegate_linux.cc(315)] Bad NaCl helper startup ack (0 bytes)
[18052:18052:0223/121245:ERROR:browser_main_loop.cc(1377)] Unable to open X display.

Trying to google a bit I thought I need to install chromium's ffmpeg or set the NACL_ENV_PASSTHROUGH env variable, but no change was seen.

When building xwalk_builder and running ./xwalk_unittest - all tests passed, but running ./xwalk_browsertest failed a few.

Trying to follow the instructions on the crosswalk project site I didn't understand how to go from the build to install it on an app, should I build for android or linux is fine? how do I go about on using it on an app?

I would really appreciate any help and directions, or if someone from the original project can invest a little time with me for me to learn it and continue support on it on my own.

Thanks,
NaNg.

I recommend first building without NaCl support since it's always a PITA (i.e. pass enable_nacl=false in your GN args).

Trying to follow the instructions on the crosswalk project site I didn't understand how to go from the build to install it on an app, should I build for android or linux is fine? how do I go about on using it on an app?

It depends on where you want to run your app. If you're targeting Linux, you need to do exactly what you did. If you're creating an Android app, you need to build for Android and follow the instructions on the website to create an APK.

Update:
Thanks @rakuco very much :)
Currently I was able to build for android and got an APK (fyi, crosswalk-project/crosswalk-website#354 isn't merged ;-) ),
Still haven't check if the APK is good or not (and, just to mention, I'm still trying to get the current version to build, not a newer version), I'll have to do it later today or tomorrow.

Will update when I have more news, thanks! :)
~NaNg

if you need someone to test your APK let me know. I would like to help too.
This community should raise some funding for @NaNgets 's efforts!
edit: so currently apk is chrome 56?

@v3ss0n currently it's still chrome 53,
I will be able to continue my quest later today.

@NaNgets nice to see that someone is working on it. Did you have some new Information for us?

@danielehrhardt Hey,

I got caught up with work and couldn't work on it...
After much thought, I think that we can't continue with Crosswalk because our users keep complaining. We'll have to come up with a more native solution, so I won't continue working on the upgrade.

Sorry.

As ben-8409 says, in many countries, Android fragmentation is still very serious ( such as China, India, and so on ), so I think it is still necessary to maintain the cross walk project. Unfortunately, Intel believes that maintenance is no longer necessary. So is there alternative solutions now that provide as consistent an experience as possible across different versions of Android? CEF(Chromium Embedded Framework) also does not support Android platforms

@gam2046 Does it make sense to create a own slack channel for it?
And discuss what we can do?

Yes lets do , we need it seriously. (Also webasm support will be awesome)
I found that these guys are doing great job : https://github.com/tenta-browser/crosswalk
So we have hope!
as refed by @garethbowen above

hi , if anyone can show how to use it and make it running we can start a website for it

@danielehrhardt is the slack channel still active and available to join?

Were you guys able to make it happen?!

@v3ss0n were you guys able to get it to work by chance?

@rakuco Hi Rakuco, is there a way to upgrade Chromium to 55+ with Cordova Crosswalk? I really need your help.

@joonbeh there is no other way than rebase Crosswalk to Chromium 55+, which is a significant effort.

@baleboy hmm.. I wonder if there's anybody who's done it.

@joonbeh @baleboy check https://github.com/tenta-browser/crosswalk/tree/chromium_59
They seems to get it working i haven't actually test, please checlk

@v3ss0n Thanks Arka! It looks like the tenta browser repo that they got working is for crosswalk and not specifically Cordova crosswalk. I'm not sure how to get build their repo and get it working for Cordova..

we could just use it. it will be just a bit of changing URL to the apk i think.

Did you guys find a way to use the tenta-browser chromium-59 in your crosswalk webview?

i will give a try in coming new project

Would be very helpful to hear how to use different Crosswalk (e.g. Tenta - Chromium 59) in Cordova Crosswalk

can you guys check with tenta developers i think they can answer quick.

I sent an email to them several days a go. No answer yet.
Hope @jwriteclub would inform us about their great job.

Still no response. Did you guys manage to communicate with them?

do you know tenta browser app uses wich version of crosswalk ?
if they app use chromium 59 i can just change A few things in the apk file then use it as library of my app and i will post how to use it here

they have 59 and 64

thanks but i meant this https://play.google.com/store/apps/details?id=com.tenta.android&hl=en
wich version this app using ?

it seems to be 59 , that is most recently maintained.

Do you guys have any hope left?

It seems crosswalk is really dead.

As you know, there is no alternative to Crosswalk on Android devices and there are many devices still using old versions of Android.

Summing everything up, without Crosswalk it is a nightmare to develop an application which works in all non-ancient Android devices and now, it has become a dream to do so with Crosswalk.

It seems Crosswalk has died long before the devices for which it was born...

Such a pity

This might not help everyone, but Google seems to be working on something:
https://developers.google.com/web/updates/2017/10/using-twa

@magneboy i have show you pointers , did you tried or just ranting here without trying? Please try first. I am not using crosswalk for this project as my team is using ReactNative and is easier than expected.

Our team(http://whale.naver.com/en) is working on this using Chromium 61. Maybe we have a plan to open sources at end of year.

useragent2

@mokanox , could you share the webview core now?

ks32 commented

**chromium 58 crosswalk build is working at last. ** @shader13 @v3ss0n

crosswalk xwalk_core_library
ninja -j8 -C out/Default xwalk_core_library

ping me if anyone still requires it. Remember I have only tested xwalk_core_library.aar file.
screenshot_20180902-002556

@ks32
God knows how happy I am...You are a hero.
Maybe we can contribute to reach even higher heights (versions of Chromium), If you share the process with us. Will be so wonderful.
Thank you very much in advance.

fidel.ahm@yandex.ru

@mokanox
Is there any problems in the process of the sharing the code and making it an open source contribution?

ks32 commented

@mokanox @fidelcode No problem in sharing. I will be setting up working branch soon. Meanwhile you can test 58 aar:
arm - https://drive.google.com/open?id=1ZQituE-Q2nxeKJflQXgJrzUlkYBV6umi
x86 - https://drive.google.com/file/d/1-hLYt8FLB-QpWhVZCpW45uHRWZEpPqkY

Sorry for the delay. We can't open that now.
Because our company still is considering a decision for open source.
Maybe we will open that at next year.
I will tell here if we have a meaningful news.

@ks32
Thanks for sharing and keeping this alive... If possible, please share the build process, so we can help maintaining even higher chromium. I am willing to help with this. Thank you for your time and efforts.
BTW.. the two links you provided are identical... both of them are for the arm build :)

ks32 commented

@OmarTesting x86 link is updated.

so .. how to build an app using this ?

@ks32 couldn't build successfully...
Not sure where the problem could be but I can't build the project.. I get

compileArmv7DebugJavaWithJavacJ:\testcordovaproject\plat
forms\android\src\org\crosswalk\engine\XWalkWebViewEngine.java:152: error: canno
t find symbol
        webView.setZOrderOnTop(zOrderOnTop);
               ^
  symbol:   method setZOrderOnTop(boolean)
  location: variable webView of type XWalkCordovaView
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: J:\testcordovaproject\platforms\android\src\org\apa
che\cordova\file\AssetFilesystem.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileArmv7DebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

What do you think the problem could be?

ks32 commented

@OmarTesting there is deprecated code in crosswalk classes. Unless it is updated it will break some functionality.

I have only tested embedded xwalk view and found it to be working with some quirks like animatable view not working, etc. Also note that I have compiled the code with webrtc disabled.

Once working branch is setup, it will be easier for other developers to work on the issues like you mentioned.

ks32 commented

@OmarTesting @mahdi71 @fidelcode @rakuco git is updated. I have also build an docker image with building tools.
https://github.com/ks32/crosswalk/tree/ks_chromium_58

Also added demo android app:
https://github.com/ks32/CrosswalkNative

@ks32 Thanks a million for everything... I will give everything a test as soon as I have the chance :)

@ks32 thanks for doing this.
anyone can make a video on how to make a build on windows ?

@ks32 Thanks for your work. Demo android app build successfully. Is it possible to add mp3 decoding support?

ks32 commented

@ewqstar yes, just need to rebuild crosswalk lib with correct flags.
update: crosswalk library is updated/compiled with media codecs
https://github.com/ks32/CrosswalkNative

@ks32 Having some issues building your application using gradlew :
https://github.com/ks32/CrosswalkNative
How do I use your docker image to build it? Do you have any additional instructions aside from the crosswalk docs?

A little more context on what I'm trying :

$ ./gradlew installDebug --stacktrace

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.

com.android.build.api.transform.TransformException: Error while generating the main dex list.

  • Try:
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)