Its upto the developer, you can do almost everything without ever relying on a 3rd party library, and the 'almost' is because somethings like IAP might require you to use Google libraries, to communicate with but maybe even that might be possible through intents and IPC mechanisms, I would say "try not to reinvent the wheel" because its just wasting time on something probably done and perfected by the community, like imagine not having retrofit, constraint layout, kotlin(its a language but you would like still need some dependencies like the stdlib), Rx, Room, LiveData, you can always build your own version of those, but...why?