Android Things 设备 API 的正确依赖配置与使用指南

android things 已于 2025 年正式停止维护,其核心库 `com.google.android.things`(含 `device` 等子包)不再通过主流 maven 仓库分发;若需兼容旧项目,应使用官方归档的 `androidthings:1.0` 依赖,并注意构建环境与目标设备的严格限制。

Android Things 是 Google 早期为嵌入式物联网设备推出的专用 Android 变体,其 SDK 提供了如 PeripheralManager、I2cDevice、UartDevice 等硬件抽象接口,全部位于 com.google.android.th

ings 根包下(例如 com.google.android.things.device 是系统内部包,不对外公开使用)。值得注意的是:该包并非独立模块,而是 androidthings 主库的一部分,且 com.google.android.things:device:1.0 是一个不存在的错误坐标——Maven 中唯一有效的发布 artifact 是:

implementation 'com.google.android.things:androidthings:1.0'

✅ 正确配置步骤

  1. 确保仓库声明完整(Google Maven 已默认包含在新版本 Android Gradle Plugin 中,但旧项目需显式添加):

    // Project-level build.gradle (or settings.gradle in AGP 8.0+)
    dependencyResolutionManagement {
        repositories {
            google()  // 必须启用
            mavenCentral()
        }
    }
  2. 在模块级 build.gradle 中添加依赖

    android {
        compileSdk 30  // Android Things 1.0 基于 Android 9 (API 28–30 兼容)
        defaultConfig {
            targetSdk 28  // 强烈建议设为 28,避免运行时权限异常
            // 必须声明 uses-library
            manifestPlaceholders = [target_things: "android.hardware.type.embedded"]
        }
    }
    
    dependencies {
        implementation 'com.google.android.things:androidthings:1.0'
    }
  3. 在 AndroidManifest.xml 中声明 Things 特性与权限

    
    
        
        
    

⚠️ 关键注意事项

  • ❌ *`com.google.android.things.device.不是公开 API**:该包属于系统内部实现(如device.PowerManagerService),开发者**不应直接 import 或调用**。正确入口类是com.google.android.things.PeripheralManager`。
  • ? Android Things 已终止支持:自 2025 年 1 月起,Google 停止更新、分发和认证 Android Things 设备;官方镜像与 SDK 下载链接已下线;新项目不应选用该技术栈。
  • ? 仅限特定硬件运行:androidthings:1.0 仅能在搭载 Android Things 系统的设备(如 Raspberry Pi 3/4 官方镜像、NXP i.MX7D)上运行,在普通 Android 手机或模拟器中会因 java.lang.NoClassDefFoundError: com.google.android.things.PeripheralManager 而崩溃。
  • ? 无 AAR 源码公开:该库以封闭 .jar 形式打包,不提供源码或 Javadoc,调试依赖反编译。

✅ 替代方案推荐(2025 年起)

场景 推荐方案
新嵌入式 Linux 项目 使用 Raspberry Pi OS + Java/Kotlin + Pi4J v2libgpiod Java bindings
跨平台 IoT 开发 Flutter + platform channelsRust + Android NDK
企业级边缘设备 Android Automotive OS(车载)、Android for IoT(新计划,尚未公开)Linux + Yocto + JNI

总之,若您正维护遗留 Android Things 项目,请严格使用 com.google.android.things:androidthings:1.0 依赖,并避免引用任何 *.device.* 内部包;对于新项目,请立即转向现代、可持续的嵌入式开发方案。