У меня есть служба Android, в которой используется частное приложение для связывания с Android (IWindowManager). Когда я создаю это как часть исходного кода платформы Android и устанавливаю его на устройство (где у меня есть доступ к Uboot и т. Д.), Он отлично работает.
Мне не нравится GIT, поэтому я перевел службу за пределы GIT в другую систему контроля версий, где у меня нет доступа к источникам Android, но я могу ее создать с помощью инструментов Android sdk build.
Поскольку IWindowManager скрыт api, система сборки sdk не смогла выполнить мои сборки. Я создал отдельный файл android.jar, содержащий android.jar из sdk plus framework.jar из сборки платформы. Для этого я использовал dj-dex2jar.
Я использовал пользовательскую задачу Ant (т. Е. Ant taskdef с поддержкой кода Java ant), чтобы изменить bootclasspath, используемый системой сборки sdk. Теперь моя служба построена с использованием инструментов для создания Android, но с использованием пользовательского файла android.jar, который я создал.
Когда я устанавливаю этот apk на нашем устройстве, я вижу, что он не работает, когда я вызываю injectKeyEvent() в службе IWindowManager. Эта служба отклоняет вызов, заявив, что у моего приложения нет разрешения INJECT_INPUT. Это ожидаемое поведение, поскольку мое приложение больше не является платформенным приложением.
У меня есть доступ к ключу платформы. Один из вариантов - подписать приложение с помощью ключевого слова платформы и обойти его. Но вот оговорка. Моему приложению также необходимо получить доступ к службам Binder из внутреннего приложения, ожидающего приложения, подписанного нашим ключом.Должен ли я подписывать приложение Android с несколькими сертификатами или что?
Как это назвать? Мне нравится, что моя служба может ссылаться на вызовы связующего, которые требуют, чтобы они были подписаны ключом платформы и могли вызвать вызовы связующего, которые требуют, чтобы они были подписаны нашим собственным ключом освобождения.
Любые идеи?
Благодаря
Вы избавитесь от своего «собственного ключа освобождения» и, по-видимому, подпишите все под ключ платформы. – CommonsWare