Android SDK Tools in Debian
Description of the project: The Android platform is free software, including the tools used for developing apps for Android. Debian-derivatives are already a preferred platform for Android developers, and since _stretch_, Debian includes core Android SDK tools, enough to build some apps. The Debian Android Tools team is working towards the goal of having the entire Android toolchain and SDK in Debian. That means Android apps can be developed using only free software from easy-to-use packages. In combination with Replicant, this will make the most popular operating system in the world, Android, into a 100% Free Software platform. This project is in conjunction with the Debian Java team, since many tools like gradle are commonly used to build Java software. Since packaging the whole Android SDK is a massive project, we also focus on specific use cases that can be covered by smaller chunks: tools for analyzing APKs, easy setup of standalone pieces that are useful to non-Android developers (Emulator, NDK, etc).
Confirmed Mentor: Hans-Christoph Steiner (UTC+2), _hc on IRC and @eighthave:matrix.org
How to contact the mentor: Contact the team via Matrix, IRC or email, since the mentors work as a team: https://wiki.debian.org/AndroidTools#Communication_Channels
Confirmed co-mentors:
- Roger Shimizu / rosh (UTC+9)
- Jochen Sprickerhof / jochensp / jspricke (UTC+2)
Difficulty level: Mostly medium to difficult, but a small project could be a bit easier.
Project size: Packaging the Android SDK is a large, multi-faceted effort. A student project can be 90 hour (small), 175 hour (medium) or 350 hour (large).
Deliverables of the project: The deliverables of this project will mostly be finished packages submitted to Debian sid, both for new packages and updated packages. Whenever possible, we should also try to get patches submitted and merged upstream in the Android sources.
What the intern will learn: Students will learn to figure out large scale projects like Android, and how to organize their own work within such projects. They will also learn about building and packaging C/C++, Kotlin and Java, as well as some of the guts of Android itself.
Application tasks:
- Find out what new/missing components (ndk? emulator?) and the location of their source code
Check Android Tools bash completion for bugs and completeness (e.g. for adb, fastboot, etc), file bugs if it doesn't work properly
Update 51-android.rules in https://salsa.debian.org/android-tools-team/android-sdk-meta to the latest upstream version.
Anything else you think suitable. We also have a list of issues that you could work on, see https://salsa.debian.org/android-tools-team/admin/-/issues?label_name%5B%5D=GSoC
Related projects: CalyxOS is a free software Android ROM (allows binary blobs). F-Droid is a repository of free software Android apps. Replicant, the 100% free software Android ROM, uses our packages to provide a 100% free software Android SDK.
There are many chunks of work to be done, sorted in priority:
- Upgraded Kotlin, which is heavily used by Gradle and the SDK itself
Finish packaging newer version of gradle , which is the official build system for Android apps
Restructure build-tools package based on upstream tags and platform-tools source packaging.
Make sdkmanager integrate nicely with tools packaged in Debian.
Package the latest Android Target Platform Framework (WiP)
Finish packaging all of the core development tools (Install android-sdk and compare /usr/lib/android-sdk with the one downloaded from Google)
Update android-tools and relevant pkg-java packages to the latest upstream version
- Create a tool to automatically make packages based on Maven Central's reproducible builds and source tarballs.
- Create a tool similar to game-data-packager but for Java: make Debian packages with jdeb based on download location, signed/unsigned tarball, build system, etc. These packages would go into contrib
Port build systems from Gradle to Maven/make
- Package and improve related tools, like apktool, androguard, fdroidserver, jadx, qark, OWASP Dependency Check, etc.
Improve android-sdk-helper
- Make all Android Tools packages build reproducibly
Add Continuous Integration tests
Improve package build systems to be more tightly integrated with upstream build systems (WiP)
- Package new parts of the Android upstream source, including the NDK, emulators, Android Studio, etc.
Since this project is a large one, multiple mentors and students could work on it simultaneously. You can find relevant documentation in READMEs in each git repo and source package. There is also this wiki section: AndroidTools
There is also a blog post about contributing to this project here
The Debian Android Tools Team works with git and git-buildpackage: PackagingWithGit
