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** - [Jasmine Chen](http://t.me/lnishan) - [J wang](http://t.me/jeremywangyuan) **Mentors** - [Shing Lyu](http://t.me/shinglyu) - [Kan-Ru Chen](http://t.me/kanru) **Coordinator** - [Irvin Chen](http://t.me/Irvin) ## 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 - Android browser MVP https://github.com/servo/servo/issues/15776 - Task breakdown - Keep a blog/note for your learning - This will help if you failed to deliver a working product (which might actually happen!) ## How to get help - IRC - jdm (Toronto time) is in charge for the students - Shing (Taipei time) is time-zone friendly and can speak in Chinese - Fabrice (Mountain View) is the Android expert - Ask in the bug/pull request directly - Wiki has some good documentation https://github.com/servo/servo/wiki - There are many comment in the code - API references: https://doc.servo.org/servo/index.html ## Notes Documenting significant events :) --- ### *Mar. 22, 2017* **Things we did:** - `./mach run <url>` ==> https://github.com/servo/servo/blob/master/python/servo/post_build_commands.py#L67 **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:** - Setep a Kubuntu 16.04 VM on VMWare Workstation, Windows 10 - Built servo for Android successfully on Kubuntu 16.04 - Built and tested the .apk - Wrote some instructions & notes in regard to the building process: https://lnishan.github.io/2017/building-servo-for-android/ **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](https://www.mozilla.org) 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 ```bash 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:** - Attempt to build servo for Android - Reported issue: [Issues while Building servo for Android (on macOS Sierra) #15758](https://github.com/servo/servo/issues/15758#issuecomment-283559637) **Issues encountered & Lessons learned:** - macOS not officially supported for Android builds - NDK r12 or r12b is a must. Manual install is required **TODOs:** - None ---