引入Android Things 1.0后PeripheralManager类方法全为存根报错如何解决
问题根因
- 你引入的
com.google.android.things:androidthings:1.0本身就是Google提供的编译存根包,仅包含类、方法的空实现用于编译期通过校验,本身没有任何实际功能,实际的外设控制逻辑需要由运行设备的Android Things系统固件内置提供。 - 此前功能正常是因为你当时运行应用的设备刷入了官方Android Things适配固件,固件内置了
PeripheralManager的完整实现;现在触发存根报错通常是两个原因:- 当前运行应用的设备使用的是普通Android系统固件,没有内置Android Things框架的实现
- 你升级了Android Gradle插件版本,构建过程中将存根依赖打包进了APK,运行时优先加载了APK里的存根类,覆盖了系统内置的实现
- 把
implementation改成compile完全无法解决问题,二者仅控制依赖的传递范围,不会修改依赖包本身的内容。
解决方法
- 第一步确认运行设备是否为刷了Android Things正式固件的适配开发板(如树莓派3B、NXP Pico系列等),普通手机、平板的Android系统本身就不支持Android Things的外设API,无法运行相关逻辑。
- 修改Gradle依赖配置,将该依赖的作用域改为
compileOnly,确保存根包不会被打包进APK,运行时会自动调用系统内置的实现类:
compileOnly 'com.google.android.things:androidthings:1.0'
- 如果你当前的设备已经没有可用的Android Things适配固件,可以放弃Android Things框架,改用libusb等第三方方案直接在普通Android系统上操作USB、串口外设,实现相同的外设控制能力。
内容的提问来源于stack exchange,提问作者Tim Nuwin
相关产品推荐
相关产品推荐

