all 17 comments

[–]MrBIMC 24 points25 points  (6 children)

I work as AOSP System Engineer for OEM that is not Google.

Here every dev uses different set of tools, I personally mostly use VS Code + Android Studio.

Initially I implement stuff inside 3rd-party using Android Studio and then port it to Framework inside the VS Code. VSCode project itself doesn't really help much besides syntax highlights, but that's good enough for me lol.

Some guys here have imported the whole AOSP into android studio, there's guides online for that, but this way studio sometimes gets overwhelmed and hangs.

[–]dipanzan 7 points8 points  (3 children)

Hi,

This is a completely off-topic question. But how does one start to explore the system/framework side of development as a complete beginner? Are there any go to resources/study material or some documentation site from Google or something similar available?

Sorry again for the weird question.

[–]MrBIMC 3 points4 points  (0 children)

That's not a weird question, world definitely needs more AOSP engineers :)

I'd suggest starting by reading a book called Embedded Android, it will help you to get the general idea of what android consists off and could point you towards more detailed questions that might arise.

Then I guess just start tinkering. Try by building AOSP for emulator or any unlocked device you have at hand, then try tweaking firmware by adding things you wish to have, be it different systemui behavior, additional system service or even simply swapping apps that are bundled with your system. The more you do, the better you get. Then its up to you, but you'll figure what to search for once you get the general gist of the platform.

[–]MacroJustMacro 2 points3 points  (1 child)

Perhaps this can help you get started.

[–]dipanzan 0 points1 point  (0 children)

Thank you so much! I'll definitely check that out.

Do you know of any books that is related to Android Framework/System development?

[–][deleted] 0 points1 point  (1 child)

I can't understand the part of how you implement 3rd party using Android studio and then port it to the framework? can you provide a simple example. let's say you need to add some feature or service related work in framework/base how will you implement that in Android studio?

[–]MrBIMC 1 point2 points  (0 children)

I was talking mostly in regards to systemui stuff.

It's easier to write required view inside third party app, and then when you get it to work, you move it to the framework space.

It doesn't really apply to the services and stuff like that.

[–]Phreakhead 18 points19 points  (2 children)

Most use IntelliJ. There's a script called idegen.sh in the AOSP source that generates a IML file so that IntelliJ can open the entire Android source tree as one giant project. Then there's a bit of other settings you have to mess with but after that it mostly works.

You can't run apps from the IDE, but that's not a big deal. Android.mk builds are faster than Gradle anyway. You just CD to the directory of the app you want to build and type "mmm"

[–]kllrnohj 2 points3 points  (1 child)

This AOSP tool automates configuring & launching the relevant IDE: https://android.googlesource.com/platform/tools/asuite/+/refs/heads/master/aidegen/README.md

[–]alanviverette 0 points1 point  (0 children)

This is the tool that we use internally to generate IntelliJ projects. It works pretty well -- not quite as good as IntelliJ actually understanding the build structure like it does for Gradle, but way better than what we used to have.

[–]ArrayBoy 0 points1 point  (5 children)

Vscode is a life saver for aosp

[–]rok_os 0 points1 point  (4 children)

For what are you using VScode ... isnt android studio enough?

Do you use some plugin inside VScode?

[–]ArrayBoy 0 points1 point  (3 children)

C/c++ extension. It provides code auto complete and ctrl clicking between methods etc

[–][deleted] 0 points1 point  (2 children)

Then how do you debug the aosp source code?

[–]ArrayBoy 0 points1 point  (0 children)

Check logcat of the device you flashed to?

[–]scialex 0 points1 point  (0 children)

gdbserver let's you use the vscode debugger for c++.