Решение : Исключение группы Гуава с модулем listenablefuture
из текущей транзитивной зависимости
implementation("android.arch.work:work-runtime:1.0.0-alpha09") {
exclude group: 'com.google.guava', module: 'listenablefuture'
}
Также используйте эту конфигурацию для linkedin-sdk:
api project(path: ':linkedin-sdk') {
transitive = true
}
[117 ] Причина :
Согласно Google Issue Tracker ,
Это неожиданно сделано нарочно! ( ссылка ) Тем не менее, скоро будет доступна новая версия Guava, что, конечно, решит проблему. На данный момент исключение, как указано выше, должно работать отлично.
Совсем недавно Эндрю Мирик ответил на аналогичный вопрос в списке рассылки darwin-dev:
KextManagerCreateURLForBundleIdentifier ()
вможет быть использования, хотя я считаю, что это только работает для кекстов, которые либо 1) загружены, или 2) в / S / L / E /. Вот снег Заголовок Leopard:
/ *! * @ функция KextManagerCreateURLForBundleIdentifier * @abstract Создает URL-адрес, содержащий кекст с заданным идентификатором пакета. * * @param распределитель * Распределитель, используемый для выделения памяти для нового объекта. * Передайте
NULL
илиkCFAllocatorDefault
* для использования текущего распределителя по умолчанию. * @param kextIdentifier * Идентификатор пакета для поиска. * * @result * CFURLRef, обнаруживающий kext с запрошенным идентификатором пакета. * ВозвращаетNULL
, если кекст не может быть найден или при ошибке. * * @discussion * Kexts сначала ищутся по тому, загружены ли они, а затем по версии. * В частности, еслиkextIdentifier
идентифицирует кекст * который в настоящее время загружен, * возвращенный URL-адрес найдет этот кекст, если он все еще присутствует на диске. * Если запрошенный кекст не загружен, * или если его комплект находится не в том месте, откуда он был изначально загружен, * возвращенный URL-адрес будет находить последнюю версию желаемого kext, * если его можно найти в папке системных расширений. * Если версия kext не найдена, возвращаетсяNULL
. * / CFURLRef KextManagerCreateURLForBundleIdentifier ( Распределитель CFAllocatorRef, CFStringRef kextIdentifier);Обратите внимание, что до Snow Leopard может работать только для kexts в / S / L / E; то API существовал, но не было headerdoc, описывающий его поведение.
Для меня это очень хорошо сработало в Mac OS X 10.5.
Используйте это
NSString *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.apple.TextEdit"];
Я не думаю, что Mac OS X сохраняет глобальную базу данных всех идентификаторов пакета везде.
Как отмечено, можно найти применение довольно простым способом с NSWorkspace.
Кроме того, так как Вы использовали kext для своего примера, на Leopard (10.5) существует инструмент, названный "kextfind", который можно выполнить для поиска kexts в системной папке Exensions (kexts в других местах, не будет найден, если Вы не указываете на инструмент на те другие места). kextfind имеет много опций - видят страницу справочника для деталей - но найти kext идентификатором пакета можно сделать это:
kextfind -bundle-id com.apple.iokit.IOStorageFamily
У нас в настоящее время нет C-уровня API для поиска kexts идентификатором пакета.
Что касается взламывания пути от последнего компонента идентификатора пакета: не делайте этого. Нет ничего требующего, чтобы имя обертки соответствовало последнему компоненту идентификатора пакета, и я видел kexts (ничего для высказывания относительно других пакетов), где эти два не соответствуют.
Если то, что Вы ищете, является определенно kext, то Вы могли посмотреть на информационный словарь для каждого пакета в/S/L/Es/папке, пока Вы не находите Ваш. Нет никакого поиска пакета идентификатором кроме для Приложений (где LaunchServices сделает это), и загруженные пакеты, поскольку Вы уже нашли.
Для ответа на этот вопрос я думаю, что тот действительно должен знать, "Почему Вы смотрите идентификаторы пакета таким образом?" Если всегда существует kexts, можно искать в некоторых довольно разумных местах, если бы они - приложения, можно использовать LS, я не вижу случай, в котором Вы хотели бы сделать обоих, таким образом, я не вижу потребность иметь распространенный способ сделать это.
Нужно отметить, что у Вас может быть несколько экземпляров идентичных идентификаторов пакета на Объеме.