平台差异
Android Things 基于 Android 平台并且为嵌入式设备做了优化。除了新功能 Android Things 在系统和 API 方面与 Android 也有很多不同。这个文档介绍了你应该理解并在应用中考虑的一些主要差异。
不支持的API
Android Things 为嵌入式设备做了优化,有肯能不包括像手机或者平板一样的功能。比如 图形用户界面是可选的,因为不是所有的设备都有显示器。
下表概述了 Android Things 不支持的 Android 功能,以及受影响的API:
常见意图
Android Things 不包括标准的系统应用程序和内容提供者。避免在应用中使用常用的意图和以下内容提供者的API
- CalendarContract
- ContactsContract
- DocumentsContract
- DownloadManager
- MediaStore
- Settings
- Telephony
- UserDictionary
- VoicemailContract
运行时权限
在你应用的清单文件中声明你需要的权限。
由于很多物联网应用不需要用户界面和输入设备,因此 Android Things的权限授予方式和 Android 应用程序不同
通过 Android Studio 运行一个应用时,所有的权限(包括危险权限)都会被授予。这适用于新安装的应用和更新已有应用的某些权限。你可以使用 adb 工具去测试 授权和删除权限。
当你准备用 Android Things 的控制台去部署你的应用时,你将为所有应用程序赋予危险权限 作为构建过程的一部分。你可以在开发阶段覆盖它,但无法在实际产品中覆盖它最终用户无法更改这些权限。
原生代码
Android Things 与 Android NDK 兼容,可以将 C/C++ 代码引进到你的应用中。由于 Android Things 设备通常受内存限制,因此平台要求使用
android:extractNativeLibs
属性 在运行时将本机库保留在 apk 中
<manifest ...>
<application
android:extractNativeLibs="false" ...>
...
</application>
</manifest>