Как исправить библиотеку, импортированную с помощью 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 вместо унифицированного.