Как исправить библиотеку, импортированную с помощью Cocoapods
My iOS-приложение использует Cocoapods для управления такими библиотеками, как AFNetworking, SDWebImage и т.д.
Одна из этих библиотек имеет ошибку, которая была исправлена в версии с выпуклой краской, но пока не была распространена на версию cocoapods. Я хотел бы сделать патч для этой библиотеки и иметь возможность поделиться ею с моей командой. Какой рекомендуемый способ справиться с этим?
На стороне примечания: я бы предположил, что может наступить время, когда подобная ситуация может произойти, когда я захочу разветкить библиотеку. Было бы неплохо, если бы у меня был способ объединить мои изменения в новые версии по мере обновления библиотеки. Можно ли использовать подобный рабочий процесс в этом случае?
Ответы
Ответ 1
Приобретение библиотеки, применение патча и указание на вашу вилку в подфайле будет вашим лучшим вариантом.
Если библиотека содержит podspec:
pod '<library', :git => 'https://github.com/yourname/<library>.git'
Если библиотека не содержит podspec, вам необходимо скопировать podspec в локальный путь и настроить его:
pod '<library>', :podspec => 'local/path/to/<library>.podspec'
Ответ 2
Я не буду утверждать, что это лучший вариант, но это один из вариантов. Вы можете использовать ловушку post install в Podfile для выполнения команды исправления. Я сделал это, разместив следующее в нижней части моего подфайла.
post_install do |installer|
puts 'Patching SVGKit to compile with the ios 7 SDK'
%x(patch Pods/path/to/file.m < localpods/patches/fix.patch)
end
Обратите внимание, что если у вас есть пробелы на пути, вам необходимо избежать обратной косой черты, которая выходит за пределы места для оболочки. "\ " вместо "\ ". Смотрите http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes.html для быстрого создания патча. Поскольку я работал с 1 простым файлом, я создал только простой diff вместо унифицированного.