HAL stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函數,並由Android runtime向HAL取得stub的operations,再callback這些操作函數。HAL里包含了許多的stub(代理人)。Runtime只要說明「類型」,即module ID,就可以取得操作函數。
程式語言
Android是執行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux裏支持的功能,Android大都沒有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,Android 並沒有 user space driver 這種東西。所有的Driver 還是在 Kernel space,並以 HAL 隔開版權問題。bionic/libc/kernel/ 並非標準的kernel header files。Android的kernel header是利用工具由Linux kernel header所產生的,這樣做是為了保留常數、資料結構與巨集。