Распространение частного проекта с Cocoapod и Carthage за 5 минут

На прошлой неделе у меня возникла проблема при создании модуля для моей команды SDK. Я когда-либо делал свою собственную капсулу давным-давно, и это было очень легко. Но это была другая история. Мне нужно обеспечить поддержку Cocoapod и Carthage и SPM для проекта, который построен в рамках частного репо, но мы хотим распространять его по всему миру. Так какой же вариант? Pod and Carthage и SPM предлагают возможности совместного использования репозитория проекта для широкого использования многими людьми, и они могут легко интегрировать его или даже внести в него свой вклад. Однако как насчет проекта частного репо, такого как SDK? Есть одно решение, которое мы можем использовать, распространять только скомпилированный двоичный исходный код фреймворка. Итак, приступим! Выполните следующие действия:

  1. Сделайте один публичный репозиторий на Github только для двоичного фреймворка, который мы хотим распространять.
  2. Поместите бинарный фреймворк туда

Ага, вот и все ~ ну погоди! ~. Нам все еще нужно провести некоторую процедуру, чтобы это было признано Карфагеном и Подом.

COCOAPOD

Для Cocoapod необходимо выполнить несколько шагов, прежде чем создать новый файл YourProductName.podspec и записать его так:

Pod::Spec.new do |s|                           
s.name         = "YourProductName"                           
s.version      = "3.2.6" // Change with your version                          
s.summary      = "Brief summary."                           s.description  = <<-DESC Your description.                         DESC                           
s.homepage     = "Your website"                           
s.license = { :type => 'Copyright', :text => <<-LICENSE                                          Copyright 2020 LICENSE }  
s.author       = { "$(git config user.name)" => "$(git config user.email)" }                           
s.source       = { :git => "https://github.com/YourRepo.git", :tag => "#{s.version}" }                           
s.vendored_frameworks = 'YourProduct.framework', 'YourProductA.framework'                     
s.platform = :ios                           
s.swift_version = "5"                           s.ios.deployment_target  = '9.0'                       
end

Как вы можете видеть выше, вам нужно добавлять его и обновлять каждый раз при выпуске нового выпуска. Для s.vendored_frameworks вы можете указать столько зависимостей, сколько вы разделили запятыми. Позже они просто выполняют одноразовую команду модуля и могут автоматически определять необходимые зависимости.
Как только эта команда сделает это, сделайте следующее.

pod repo add YourProductName https://github.com/YourRepo.git

Подождите, пока процесс, описанный выше, не будет завершен, затем вы можете добавить тег своей ветки в удаленную ветку после добавления тега, а затем сделайте это

pod repo push YourProductName YourProductName.podspec

Как только этот процесс будет завершен, ваш под будет готов к использованию !. Теперь перейдите к другому проекту и добавьте его в свой Podfile (вы можете опустить версию, чтобы всегда возвращаться к последней поддерживаемой версии)

pod 'YourProductName', '0.0.1', :source => "https://github.com/YourRepo.git"

Если у вас есть более новая версия в вашем теге, всегда выполняйте эту команду ниже каждый раз, чтобы обновить репозиторий pod. (И также обновите свой podspec)

pod repo push YourProductName YourProductName.podspec

КАРФАГЕН

Для Карфагена это очень простая установка. Сожмите весь двоичный файл, которым хотите поделиться, и переименуйте его в соответствии с именем, которое вы хотите использовать для него. Теперь перейдите в репозиторий и поместите его туда, однако давайте поместим наш .gitignore, чтобы git не отправлял его в удаленное репо, как показано ниже:

.DS_Store                                               
*.zip

Затем добавьте новый JSON (YourProductName.json), содержащий версию и ссылку на двоичный файл, как показано ниже:

{                           
    "0.0.1": "https://github.com/YourRepo/releases/download/0.0.1/YourProductName.zip"
}

Если вы видите шаблон выше, нам все еще нужен еще один шаг, мы должны выпустить релиз в нашем репозитории git. Перейдите в Releases и нажмите "Черновики новых выпусков". Помните, что вам нужно добавить тег заранее, чтобы они могли искать связанный тег.

Как только вы перейдете на эту страницу, заполните всю необходимую информацию, затем прикрепите .zip и .json к строке Attach binaries ..... После этого опубликуйте релиз.

Как только это будет сделано, вы можете сделать это в другом вашем проекте Cartfile ниже:

binary "https://github.com/YourRepo/releases/download/0.0.1/YourProductName.json" ~> 0.0.1

Убедитесь, что 0.0.1 является местом назначения выпускаемой версии, которую мы хотим использовать.

Наконец-то все готово! Теперь вы можете сделать свою двоичную структуру общедоступной и использоваться клиентом, не раскрывая им свой частный код! Единственное, что осталось, это SPM, как только я разберусь, как это сделать, я напишу об этом другую статью. Однако у этого способа есть недостаток, нам нужно вручную помещать выпуск каждый раз в это общедоступное репо и тщательно управлять podspec и .zip, а также .json.

Найди меня в: Майкл, Github