Try   HackMD

NCTU Servo Android Browser MVP

Building a front-end prototype for servo on Android.

Meta issue page on GitHub: https://github.com/servo/servo/issues/15776

Members

Students

Mentors

Coordinator

The process

  1. Find/file a bug to https://github.com/servo/servo
  2. Fork servo/servo
  3. Start hacking
  4. Submit a pull request
  5. A bot will find you an reviewer
    • If the reviewer is not responding, ask on IRC or ping me (Shing)
  6. Reviewer will ask you to modify your code (if necessary)
    • modify it, commit to your branch, push to your fork directly
    • The change will show up in the pull request
    • The reviewer will check again
  7. Reviewer will give you an “r+” means it’s ready to go
    • You might need to do a rebase
  8. Reviewer will tell the bot to do testing for you and merge the code if all passed
    • If any failed, fix it

The goal

How to get help

Notes

Documenting significant events :)


Mar. 22, 2017

Things we did:

Issues encountered & Lessons learned:

  • The run command depends on adb (Android Debug Bridge) and am (Activity Manager)

TODOs:

  • Find out what took place during
am force-stop com.mozilla.servo
echo servo >/sdcard/servo/android_params
"echo '%s' >>/sdcard/servo/android_params" % param.replace("'", "\\'")
am start com.mozilla.servo/com.mozilla.servo.MainActivity

Mar. 7, 2017

Things we did:

Issues encountered & Lessons learned:

  • .apk should be packaged using OpenJDK 8
  • Currently, the Servo app crashes or blanks out on most webpages. Can browse to the frontpage of Mozilla but the stylesheets and images seem to be completely ignored

TODOs:

  • Document and report minor issues related to building for Android

Mar. 6, 2017

Things we did:

  • Setup a VM on VirtualBox, macOS Sierra
  • Built servo for Android successfully on Kubuntu 16.10

Issues encountered & Lessons learned:

  • Memory usage peaked at ~2.5G, so a minimum of 3G RAM is required for a successful build (encountered ICEs with rustc)
  • (Unresolved) Ubuntu 16.10 only provides OpenJDK 8 whereas packaging (ie. ./mach package) depends on OpenJDK 7 -> It actually depends on OpenJDK 8 but for some reasons some .jar files were compiled with OpenJDK 7 and thus the imcompatibility.
  • Ubuntu 16.04
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java

TODOs:

  • Document and report minor issues
  • Test the build

Feb. 28, 2017

Things we did:

Issues encountered & Lessons learned:

  • macOS not officially supported for Android builds
  • NDK r12 or r12b is a must. Manual install is required

TODOs:

  • None