android things并非标准的android系统,但而且很大程度上,things是标准android系统的一个子集(虽然含有某些特殊的部分)。
google的android things管网上对此有专门介绍,https://developer.android.com/things/get-started/platform-differences
部分译文如下:
Android Things基于Android平台,针对嵌入式设备进行了优化。 除了新功能外,Android Things还包含各种与Android不同的系统和API差异。
App的安装
things设备上应用程序的集合由开发人员/设备制造商管理(安装、发布等),并通过OTA更新进行更改(应用升级等),而不是由最终用户管理。 Android Things简化了单个应用程序的使用。 一个应用程序在系统启动时自动启动。
与标准android系统的差异
Android Things针对嵌入式设备进行了优化,这些设备可能不包含与Android手机或平板电脑相同的功能集。 例如,图形用户界面是可选的,因为并非所有设备都包括显示器。
下面概述了Android Things设备当前不支持的Android功能集以及受影响的框架API:
功能 | API |
System UI (系统UI:状态条,导航条,快速设置) |
NotificationManager:通知管理 KeyguardManager:锁屏管理 WallpaperManager:壁纸管理 |
VoiceInteractionService (语音交互服务) |
SpeechRecognizer:语音识别 |
android.hardware.fingerprint | FingerprintManager:指纹管理器 |
android.hardware.nfc | NfcManager:Nfc管理器 |
android.hardware.telephony | SmsManager:短信管理器 TelephonyManager:电话管理器 |
android.hardware.usb.accessory | UsbAccessory:对USB设备提供支持 |
android.hardware.wifi.aware | WifiAwareManager:对Wifi Aware API提供支持 |
android.software.app_widgets | AppWidgetManager:app小部件管理器 |
android.software.autofill | AutofillManager:自动填充管理器 |
android.software.backup | BackupManager:备份管理器 |
android.software.companion_device_setup | CompanionDeviceManager:管理配套设备的系统级服务 |
android.software.picture_in_picture | Activity Picture-in-picture:activity的画中画功能 |
android.software.print | PrintManager:打印管理器 |
android.software.sip | SipManager:对SIP API提供支持。 |
提示:可以通过PackageManager.hasSystemFeature()检查是否支持某种功能。
系统组件
除了API,某些android系统的标准的系统应用程序和程序套件在android things中也没有,包括:
CalendarContract:日历
ContactsContract:联系人
DocumentsContract:文档
DownloadManager:下载
MediaStore:多媒体
Settings:设置
Telephony:电话
UserDictionary:用户字典
VoicemailContract:语音邮件
App的运行时权限
运行在android things中的app必须在manifest文件中声明权限。
由于许多物联网应用程序不需要用户界面或输入设备,因此对Android事件授予应用程序权限的方式与典型的Android应用程序不同。 权限使用Android Studio或Android Things Console授予。
从Android Studio运行应用程序时,将在安装时授予所有权限(包括危险权限)。 这适用于现有应用中的新应用安装和更新的<uses-permission>元素。 可以使用adb工具授予或撤消测试权限。
当准备使用Android Things Console分发应用程序时,将为所有应用程序授予危险权限(而不是最终用户),作为构建创建过程的一部分。 可以在开发期间覆盖它,但不能在实际产品上覆盖它; 最终用户无法修改这些权限。
本地代码
Android Things与Android NDK兼容,可将C / C代码包含到应用中。 但是,由于Android Things设备通常受内存限制,因此应用程序必须使用在manifest文件中使用extractNativeLibs属性在运行时将本机库保留在APK中。
<manifest ...>
<application
android:extractNativeLibs="false" ...>
...
</application>
</manifest>