首页 > 解决方案 > 自动配置 Android 设置?

问题描述

在工作中,我们有一个基于 Android 的信息娱乐系统,我们不断地在六个不同的测试台上部署新版本。部署脚本在道德上等同于:

for apk in ${apk_files}; do
    adb install -r ${apk]
done

在此之后,我们需要手动执行以下步骤:

  1. 将家庭应用程序设置为我们刚刚安装的应用程序之一(始终,而不是仅一次
  2. 成为开发人员,并启用保持清醒选项
  3. 为文本转语音功能选择 Google TTS 引擎而不是 Pico

在每次部署后执行这些步骤是一个巨大的 PITA。人们经常忘记一个或多个步骤,使测试台处于非工作状态。这会导致一堆“虚假”的错误报告,浪费大家的时间。

有什么方法(adb也许是使用)可以使这些步骤自动化吗?

标签: android

解决方案


  1. 您可以使用 禁用其他家庭应用程序adb shell pm disable ...。我认为没有将应用程序设置为默认值的命令行选项。我记得以前研究过这个,并且有一个“首选应用程序”XML 文件存储在其中。如果你想研究它,魔法就会发生在PackageManagerService.addPreferredActivityInternal(). 看起来它将数据写入磁盘上的文件:package-restrictions.xml. 我想你可以弄清楚它的格式并编写文件(你需要root)。

  2. 这由系统设置“stay_on_while_plugged_in”控制。您可以使用adb shell settings system put ....

  3. TTS 引擎存储在安全设置“tts_default_synth”中。你可以看到像这样的值,

    $ adb shell settings get secure tts_default_synth com.svox.pico
    com.svox.pico
    

    你可以用adb shell settings put secure "tts_default_synth" <the value>.

我注意到,如果之前未设置该值,则当您使用获取的settings命令获取该值时,即使有默认值null,它也未在 中列出。settings list从 Android 6 开始(我认为),设置不再位于数据库中,而是存储在 .xml 文件中的 XML 文件中/data/system/users/0/settings_*.xml。您可以看到其中的值。


推荐阅读