QUIC for Android

1,056 views
Skip to first unread message

Chao Kong

unread,
Nov 28, 2016, 2:45:08 PM11/28/16
to QUIC Prototype Protocol Discussion group
Hi All,

I am working on porting QUIC to Android using the source code chromium chromium and proto-quic.
I was able to build the chromium apk for android, then I want to build the "quic-client" for android.
I am following the the approach here  android_build_instructions.
More specifically,
after running "gn args out/Default",
 I insert
"
target_os = "android"

target_cpu = "arm"  # (default)
is_debug = true  # (default)"

Then, I run
"ninja -C out/Default quic_client"

The quic_client can be built. And I use adb push to push the related binary into
a Nexus 5 device.Here are the binaries I push into the "data/local/tmp"
build_vars.txt lib_net_unittests__library.cr.so.TOC
icudtl.dat libnet_with_v8.cr.so
libbase.cr.so libnet_with_v8.cr.so.TOC
libbase.cr.so.TOC libprefs.cr.so
libbase_i18n.cr.so libprefs.cr.so.TOC
libbase_i18n.cr.so.TOC libprotobuf_lite.cr.so
libboringssl.cr.so libprotobuf_lite.cr.so.TOC
libboringssl.cr.so.TOC libsql.cr.so
libchromium_sqlite3.cr.so libsql.cr.so.TOC
libchromium_sqlite3.cr.so.TOC liburl.cr.so
libcrcrypto.cr.so liburl.cr.so.TOC
libcrcrypto.cr.so.TOC libv8.cr.so
libc++_shared.so libv8.cr.so.TOC
libgin.cr.so libv8_libbase.cr.so
libgin.cr.so.TOC libv8_libbase.cr.so.TOC
libicui18n.cr.so md5sum_bin
libicui18n.cr.so.TOC natives_blob.bin
libicuuc.cr.so quic_client
libicuuc.cr.so.TOC quic_server
libnet.cr.so snapshot_blob.bin
libnet.cr.so.TOC v8_build_config.json
lib_net_unittests__library.cr.so

Then, I run
"
./quic_client --host=my ip address --port=6121 https://www.example.org/"

Previously I have built the "quic-client" and "quic-server" for the linux desktop and tested it.
Now, I still use the "quic-server" for the android "quic-client"

Unluckily, the "quic-client" cannot work on android and the error is in the attachment.

I am wondering if it is possible to port "quic" into "android" by the source code chromium.

In addition, I know that cronet is the library for QUIC on mobile devices. But the quic part is in
a compiled binary, and I didn't find the source code for the quic binary, is the source code open now?

It is great if I can get help from you! Thanks!





Screenshot from 2016-11-26 23-24-53.png

Eugene Shevchuk

unread,
Dec 2, 2016, 3:28:51 AM12/2/16
to QUIC Prototype Protocol Discussion group
Hi Chao,

The error you sent occurs because toy quit client executable wasn't created for mobile devices.

In order to have quic client successfully running on Android you have to call InitVM function from base/android/jni_android.cc before using any chromium related functionality. See example how to do that in chrome/browser/android/monochrome_entry_point.cc. You can modify net/tools/quic/quic_client_bin.cc or quic_simple_client_bin.cc to include that.

In your case chromium stack is trying to get access to Java security-related functionality to have certificates verified during secure connection establishment process. So the workaround would be to disable certificate checks via --disable-certificate-verification CL argument.

Good luck!

понедельник, 28 ноября 2016 г., 11:45:08 UTC-8 пользователь Chao Kong написал:

Chao Kong

unread,
Dec 2, 2016, 8:18:43 PM12/2/16
to proto...@chromium.org
Great, thanks a lot! That's really helpful!



===============================================
Chao Kong(孔超)
 
Department of Computer Science Engineering
University of Michigan at Ann Arbor
 
===============================================
 

--
You received this message because you are subscribed to the Google Groups "QUIC Prototype Protocol Discussion group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to proto-quic+unsubscribe@chromium.org.
To post to this group, send email to proto...@chromium.org.
For more options, visit https://groups.google.com/a/chromium.org/d/optout.

Reply all
Reply to author
Forward
0 new messages