I faced the same design problem (several applications using the same engine contain persistent SQLite database tables, services, and tons of logic).
after I have done my own research, I am afraid that the conclusion is that the only way to do this is to do it in the Google way. :
Google Play Services is a process that Google has definitely decided to solve this problem for its own scenario - an engine that should always be available to all applications (including their own). this means that it is an independent application that provides services and content providers to all applications.
Google will launch Google Play Services in the background using the Google Play Store app. what a privilege no other application can have, since they control both applications and the Android OS itself (not fair!)
therefore, if you can force your users to download a dedicated application only for your engine (for example, Google), this is great!
if not - then you will have to settle until the main / main application has to be installed, and this is the only thing that provides data and services for everyone else.
source share