Ошибка установки пакета Android Wear — WearablePkgInstaller﹕ с кодом возврата -104

#android #wear-os

#Android #wear-os

Вопрос:

Я пытаюсь заставить пользовательский циферблат часов работать, но когда я упаковываю приложение с помощью мобильного APK-файла и устанавливаю подписанный мобильный APK-файл на свой телефон, я получаю следующее сообщение об ошибке в моем logcat, когда wear apk пытается установить на часы

 1149-1159/? E/WearablePkgInstaller﹕ Package install failed com.ptrprograms.wearcustomwatchface, returnCode -104
  

Кто-нибудь знает, где я могу найти список кодов возврата, чтобы я мог выяснить, что происходит? Единственные отличия моего кода от базового проекта wear, созданного Android Studio, заключаются в манифестах:

 wear manifest:
<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

mobile manifest:
<activity
        android:name=".CustomWatchFaceActivity"
        android:label="@string/app_name"
        android:enabled="true"
        android:taskAffinity=""
        android:allowEmbedded="true"
        android:theme="@android:style/Theme.DeviceDefault.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="com.google.android.clockwork.home.category.HOME_BACKGROUND" />
        </intent-filter>

        <meta-data
            android:name="com.google.android.clockwork.home.preview"
            android:resource="@drawable/ic_launcher"/>
    </activity>
  

Дополнительная информация — добавлен фильтр намерений категории ЗАПУСКА, и он устанавливается затем, так что, похоже, циферблаты часов прямо сейчас, возможно, потребуется включить и в обычное приложение, но у кого-то, вероятно, есть обходной путь и для этого.

         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
  

Комментарии:

1. Для тех, кто попадает сюда с аналогичными ошибками кода возврата; android.googlesource.com/platform/frameworks/base/ /f76a50c /…

Ответ №1:

РЕДАКТИРОВАТЬ: Ниже приведен мой новый пост в блоге, в котором объясняется новый интерфейс Watch Face API в Lollipop.

http://toastdroid.com/2014/12/10/developing-a-watch-face-for-android-wear-lollipop/


Убедитесь, что ваш мобильный модуль и модули wear имеют одинаковое название пакета и что мобильное приложение содержит все разрешения, необходимые модулю wear. Кроме того, для watchfaces не требуется разрешение WAKE_LOCK. Вы можете прочитать больше о разработчике watchface в сообщении в блоге, которое я сделал:

http://toastdroid.com/2014/07/18/developing-watchfaces-for-android-wear/

Комментарии:

1. Воспользуйтесь этими ссылками, в них есть все, что вам нужно!

2. @MinceMan Я не могу запустить приложение для носимых устройств Android на симуляторе. Хотите знать, нужно ли сделать что-то особенное, иначе говоря, нам также нужно подключить устройство? У меня создалось впечатление, что простой запуск симулятора приведет к запуску APK и работе в качестве циферблата.

3. На самом деле я бы рекомендовал использовать блокировки пробуждения для циферблатов. Это помогает выполнять обновления при затемненном экране

Ответ №2:

Удалите следующие 2 строки разрешений из вашего wear AndroidManifest.xml файл:

 <uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  

Я считаю, что фильтр намерений необязателен, если вы хотите, чтобы ваше приложение было только циферблатом для часов.

Вот пример приложения Watch, которое я нашел, и вы можете посмотреть на него для справки. https://github.com/kentarosu/AndroidWearAndLIFX

Комментарии:

1. На самом деле проблема в том, что вам нужны эти разрешения в файле манифеста для мобильных устройств. Я уже запустил его пару дней назад и выпустил руководство 🙂 ptrprograms.blogspot.com/2014/07 / … с исходным кодом github.com/PaulTR/AndroidDemoProjects/tree/master /…

Ответ №3:

Просто необходимо добавить разрешения в манифест для мобильных устройств