Commit 0e2aec9
feat: replace min_api_level conditionals with DEX signature-based marshaling
Replace the incorrect min_api_level approach (which assumed version-
dependent params are always at the end) with runtime DEX method
signature resolution that correctly handles mid-signature changes
between Android API levels.
New infrastructure:
- VersionAwareTransport.ResolveMethodSignature() extracts param type
descriptors from device framework JARs via $Stub$Proxy classes
- dex.ExtractAllFromJAR() extracts both transaction codes AND method
signatures in a single JAR pass (deduplicating the scan)
- binder.MatchParamsToSignature() matches compiled params to device
params by type, handling additions/removals/reordering
- codegen emits per-method DEX descriptors and a two-path marshaling
strategy: fast path when signatures match, adapted path otherwise
Removes all min_api_level annotations from bluetooth specs.1 parent fc08e19 commit 0e2aec9
1,416 files changed
Lines changed: 245489 additions & 37385 deletions
File tree
- aaudio
- android
- accessibilityservice
- accounts
- apphibernation
- app
- admin
- ambientcontext
- backup
- blob
- contentsuggestions
- job
- ondeviceintelligence
- people
- prediction
- search
- slice
- smartspace
- timedetector
- timezonedetector
- trust
- usage
- wallpapereffectsgeneration
- wearable
- bluetooth
- le
- companion
- virtualcamera
- virtualnative
- virtual
- audio
- camera
- sensor
- content
- integrity
- om
- pm
- dex
- permission
- verify/domain
- res
- rollback
- credentials
- database
- debug
- dvr
- flags
- frameworks
- automotive
- display
- powerpolicy
- internal_
- telemetry
- cameraservice
- device
- service
- location/altitude
- sensorservice
- stats
- vibrator
- graphics/bufferstreams
- gui
- hardware
- audio
- core
- sounddose
- effect
- sounddose
- authsecret
- automotive
- audiocontrol
- can
- evs
- ivn
- occupant_awareness
- remoteaccess
- vehicle
- biometrics
- face
- fingerprint
- bluetooth
- audio
- finder
- lmp_event
- offload/leaudio
- ranging
- boot
- broadcastradio
- camera2
- extension
- camera
- device
- provider
- cas
- confirmationui
- contexthub
- devicestate
- display
- drm
- dumpstate
- face
- fastboot
- fingerprint
- gatekeeper
- gnss
- measurement_corrections
- visibility_control
- graphics
- allocator
- composer3
- hdmi
- health
- storage
- identity
- input
- processor
- iris
- ir
- lights
- light
- location
- macsec
- media
- bufferpool2
- c2
- memtrack
- net/nlinterceptor
- neuralnetworks
- nfc
- oemlock
- power
- stats
- radio
- config
- data
- ims
- media
- messaging
- modem
- network
- sap
- sim
- voice
- rebootescrow
- secure_element
- security
- authgraph
- keymint
- secretkeeper
- secureclock
- see/storage
- sensors
- soundtrigger3
- soundtrigger
- tests/extension/vibrator
- tetheroffload
- thermal
- threadnetwork
- tv
- hdmi
- cec
- connection
- earc
- input
- tuner
- usb
- gadget
- uwb
- vibrator
- weaver
- wifi
- hostapd
- supplicant
- location
- provider
- media
- audiopolicy
- audio
- metrics
- midi
- musicrecognition
- projection
- session
- soundtrigger_middleware
- soundtrigger
- tv
- ad
- interactive
- tunerresourcemanager
- tuner
- net
- vcn
- wifi
- nl80211
- nfc
- os
- image
- incremental
- logcat
- storage
- permission
- printservice
- recommendation
- print
- security
- attestationverification
- keystore
- rkp
- service
- ambientcontext
- appprediction
- assist/classification
- attention
- autofill
- augmented
- carrier
- chooser
- contentcapture
- contentsuggestions
- controls
- credentials
- displayhash
- dreams
- euicc
- games
- media
- notification
- oemlock
- ondeviceintelligence
- persistentdata
- quickaccesswallet
- quicksettings
- remotelockscreenvalidation
- resolver
- resumeonreboot
- rotationresolver
- search
- settings/suggestions
- smartspace
- storage
- textclassifier
- timezone
- translation
- trust
- voice
- vr
- wallpapereffectsgeneration
- wallpaper
- watchdog
- wearable
- se/omapi
- speech
- tts
- system
- keystore2
- net/netd
- suspend
- internal_
- telephony
- data
- gba
- ims/aidl
- mbms
- vendor
- satellite
- stub
- tests/binder
- tracing
- util
- view
- accessibility
- autofill
- contentcapture
- translation
- webkit
- window
- binder
- versionaware
- dex
- com
- android
- frameworks
- coretests/aidl
- perftests/am/util
- ims
- internal_
- uce
- options
- presence
- uceservice
- internal_
- appwidget
- app
- procstats
- backup
- compat
- graphics/fonts
- infra
- inputmethod
- net
- os
- policy
- statusbar
- telecom
- telephony
- euicc
- textservice
- view
- inline
- widget
- net
- onemedia
- playback
- printspooler/renderer
- server/inputflinger
- smspush/unitTests
- systemui
- notetask
- screenshot
- appclips
- unfold/progress
- wallet/controller
- test/viewembed
- wm/shell
- back
- bubbles
- common/pip
- desktopmode
- recents
- splitscreen
- startingsurface
- transition
- example
- fuzztest
- servicemanager
- specs/android/bluetooth
- tools/pkg/codegen
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments