|author||Joel Fernandes (Google) <email@example.com>||Mon May 28 14:34:48 2018 -0700|
|committer||Joel Fernandes (Google) <firstname.lastname@example.org>||Mon May 28 15:05:59 2018 -0700|
Add support to build an ext4 image from a filesystem This is suitable for passing to Qemu with -hda which makes it appear as a disk to a Qemu instance. Once it appears, one can chroot into it. Note: - Device need not be connected, this option is only used to prepare a standalone image. - BCC isn't built but is just cloned into the image. - Other options such as --buildtar are ignored. Signed-off-by: Joel Fernandes (Google) <email@example.com>
androdeb provides a powerful Linux shell environment where one can run popular and mainstream Linux tracing, compiling, editing and other development tools on an existing Android device. All the commands typically available on a modern Linux system are supported in androdeb.
Powerful development environment with all tools ready to go (editors, compilers, tracers, perl/python etc) for your on-device development.
No more cross-compiler needed: Because it comes with gcc and clang, one can build target packages natively without needing to do any cross compilation. We even ship git, and have support to run apt-get to get any missing development packages from the web.
Using these one can run popular tools such as BCC that are difficult to run in an Android environment due to lack of packages, dependencies and cross-compilation needed for their operation.
No more crippled tools: Its often a theme to build a static binary with features disabled, because you couldn‘t cross-compile the feature’s dependencies. One classic example is perf. However, thanks to androdeb, we can build perf natively on device without having to cripple it.
Target: An ARM64 android N or later device which has “adb root” supported. Typically this is a build in a userdebug configuration. Device should have atleast 2 GB free space in the data partition.
Host: A machine running recent Ubuntu or Debian, with 4GB of memory and 4GB free space. Host needs debootstrap and qemu-debootstrap packages. To install it, run
sudo apt-get install qemu-user-static debootstrap. Other distributions may work but they are not tested.
git clone https://github.com/joelagnel/androdeb.git cd androdeb sudo ln -s ./androdeb /usr/bin/androdeb
# First make sure device is connected to system androdeb prepare --download
CTRL + Dand you will exit out of the shell. To remove androdeb from the device, run:
If you have multiple devices connected, please add
-s <serialnumber>. Serial numbers of all devices connected can be obtained by
androdeb prepare --download --kernelsrc /path/to/kernel-source
If you need to put kernel sources for an existing install, run:
androdeb prepare --kernelsrc /path/to/kernel-source
Note: The kernel sources should have been built (atleast build should have started).
The androdeb fs will be prepared locally by downloading packages as needed:
androdeb prepare --fullbuild
This is unlike
--download where the androdeb rootfs is itself pulled from the web.
androdeb prepare --fullbuild --kernelsrc /path/to/kernel-source/
androdeb prepare --editors --compilers
androdeb prepare --bcc --kernelsrc /path/to/kernel-source/
Note: BCC is built while being installed. Also
--kernelsrc is recommended for tools to function unless device has them already.
androdeb prepare --fullbuild --buildtar /path/
After device is prepared, it will extract the root fs from it and store it as a tar archive at
/path/androdeb-fs.tgz. This can be used later.
androdeb prepare --archive /path/androdeb-fs.tgz
androdeb prepare --buildimage /path/to/image.img
This can then be passed to Qemu as -hda. Note: This option doesn't need a device connected.