I am in the process of understanding the telephony stack in Android, and I would like you to confirm or dismiss a conclusion that I made:
Reading the source it seems that the (very limited) exposed telephony API through TelephonyManger, SmsManager, PhoneStateListener, and friends, performs IPC to the phone app dalvik process using the AIDL interfaces ITelephony, ISms, IPhoneStateListener, etc.
Is this correctly understood, and can you elaborate on my understanding if possible? :)
Yes the telephony stack that exists in the framework is instantiated by the phone app. The phone app is set up as a persistent process, so the system starts it early in boot and makes sure it stays running.
The phone app is at packages/apps/Phone. Its manifest package name (and thus the name of the process it runs in) is com.android.phone.