我现在做的项目是树莓派+Androidtings,主要实现数据传输和一些工业级的日常响应及文件处理,前几天将Androidthings0.7.0升级到0.8,今天又将0.7和0.8升级到1.0,中间遇到了好多问题,主要包括以下一些:
一、修改intent filter
在升级前查看Androidthings的API的时候发现,升级以后需要修改配置文件(AndroidManifest.xml),最开始的一点就是修改主页的路径配置,将原先的主路径“intent filter“中的“IOT_LAUNCHER ”改为了 “android.intent.category.HOME“,因为0.8.0以后“IOT_LAUNCHER ”将被弃用,而且API中说到,这个有利于启动硬件以后不会再退出Android软件,返回主界面
<!-- 启动时自启动android Things的主程序 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
二、运行调试报错:java.lang.SecurityException: Caller lacks required permission com.google.android.things.permission.USE_PERIPHERAL_IO (运行环境Androidstudio3.0)
这个错误相对于第一个问题比较棘手,因为在0.7.0的时候,IO的控制不需要申明权限,但升级0.8.0以后,及Androidthings以后的版本中,Android软件控制PIO的时候需要声明控制权限。看过API的可能知道这一点,这个权限声明需要三步:
1、在AndroidManifest.xml中添加一段:
<uses-permission android:name="com.google.android.things.permission.USE_PERIPHERAL_IO" />
用来声明权限
2、如果你在之前没有在树莓派或者是硬件上运行软件,那么直接用命令行执行以下命令:
adb install -g app-release.apk
也就是给硬件安装软件,其中“-g”是声明运行权限的,而后面的“app-release.apk”则是你在运行这行命令前生成(build)的apk安装包,因为我用的是Androidstudio3.0,所以生成的安装包在“\app\release”下,只需要将这个安装包复制到adb文件夹底下,执行命令就可以了,执行结果必须为“success”才可以,若是以下结果,则是失败
若是你之前在树莓派或者是硬件上运行过软件,那么执行以下命令:
adb uninstall 【AndroidManifest.xml中的软件URL(manifest标签中package的值)】 ----卸载软件
接下来的方式跟上面没安装软件的方式相同
3、在开发环境中run,如果以上两步都没问题的话,那么运行正常