== 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 stretch already includes the core Android SDK tools, enough to build some apps. The Debian [[https://wiki.debian.org/AndroidTools|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 [[http://www.replicant.us/|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 [[https://wiki.debian.org/Java|Debian Java]] team, since many tools like `gradle` are for any Java software. * '''Confirmed Mentor''': Hans-Christoph Steiner (UTC+2), hans@at.or.at and _hc on IRC * '''Confirmed co-mentors:''' * Chirayu Desai (UTC+5:30), chirayudesai1@gmail.com and cdesai on IRC * Andrej Shadura (UTC+2), andrewsh on IRC * Phil Morrell (UTC+1), emorrp1 on IRC * '''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. * '''Desirable skills''': Building and packaging C/C++ and Java code, an understanding of `git`. Android development is preferable. * '''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 and Java, as well as some of the guts of Android itself. * '''Related projects:''' links to some existing projects that are related. * '''Mentors affiliation with Debian:''' _hc is a DD / cdesai is a DM. * '''Application tasks:''' (simple tasks that could show your determination): * Find out what new/missing components (D8/R8? `hidl-gen`? `sdkmanager`?) and the location of their source code * build an Android app using only `apt install android-sdk android-sdk-platform-23 android-sdk-helper`, a very simple app is good for trying * test Android Tools bash completion (e.g. for `adb`, `fastboot`, etc), file bugs if it doesn't work properly * 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:''' 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: * Finish packaging Kotlin, which is heavily used by Gradle and the SDK itself * Finish packaging version 6 of DebianPackage:gradle , which is the official build system for Android apps * Package the latest Android Target Platform Framework ([[https://salsa.debian.org/android-tools-team/android-sdk-platform-latest|WiP]]) * Finish packaging all of the core development tools (Install DebianPackage:android-sdk and compare `/usr/lib/android-sdk` with the one downloaded from Google) * Update [[https://qa.debian.org/developer.php?login=android-tools-devel%40lists.alioth.debian.org|android-tools]] and relevant [[https://qa.debian.org/developer.php?email=pkg-java-maintainers@lists.alioth.debian.org|pkg-java]] packages to the latest upstream version * Improve DebianPackage:android-sdk-helper * Make all Android Tools packages build reproducibly * Add [[https://ci.debian.net|Continuous Integration]] tests * Improve package build systems to be more tightly integrated with upstream build systems ([[https://salsa.debian.org/android-tools-team/admin/-/issues/22|WiP]]) * Package and improve related tools, like apktool, androguard, fdroidserver, drozer, libscout, qark, OWASP Dependency Check, etc. * 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 [[https://seamlik.github.io/blog/posts/How-to-Contribute-to-Android-SDK-in-Debian.html|here]] The Debian Android Tools Team works with git and git-buildpackage: [[PackagingWithGit]]