Swift パッケージライブラリの作成
いつものように、一歩ずつ!
Swift Packageプロジェクトを初期化します
Xcodeでの初期化
XQPackageTestフォルダを作成し、ターミナルを開いてフォルダにcdし、次のように入力します。
swift package init
するとコンソールに次のように表示されます。
これは基本ライブラリが初期化されたことを意味します。
Creating library package: XQPackageTest
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/XQPackageTest/XQPackageTest.swift
Creating Tests/
Creating Tests/LinuxMain.swift
Creating Tests/XQPackageTestTests/
Creating Tests/XQPackageTestTests/XQPackageTestTests.swift
Creating Tests/XQPackageTestTests/XCTestManifests.swift
ファイル・ディレクトリは次のとおりです。
ファイルの内部では、実際には、一般的に2つだけ気にする必要があります。
- Package.swift:ライブラリの設定、プロパティなどを記述し、CocoaPodsのxxx.podspecファイルとして使用できます。
- Source/xxxフォルダ:ソースコードが格納されているフォルダ。
Xcodeでの初期化
もちろん、Xcodeは以下のようにSwift Packageを作成するためのエントリを提供します。
ライブラリコードの記述
ここでは、システムが生成したXQPackageTest.swiftを直接取得してコードを変更し、依存関係が成功したときに、それが本当に成功したかどうかをテストできるようにします。
次に、command + buildして、正しいかどうか確認してください。
エラーを報告しているので、今度はエラーを見てください。
実際には、テストモジュールが実行できない結果、変更されたコードのためです。
この時点で、次のように、コードのこの行をコメントアウトするか、正しいコードにコードを変更することができます。
ライブラリをクラウドにアップロード
変更が完了したら、リポジトリをクラウドにアップロードしてください。
プロジェクトの依存関係
iOSまたはMacのプロジェクトを開き、 前へ 同じように、サードパーティのリンクを独自のライブラリへのリンクに置き換えて依存関係を追加します。
ただし、Release版を発行したくない場合は、BranchやCommitを選択すればよいことに注意してください。
たとえば、Releaseを作成せずに依存関係を作成すると、次のようなエラーが発生します。
The package dependency graph can not be resolved; unable find any available tag for the following requirements:
この場合は、バージョンを Branch か Commit に変更してください。
たとえば、Branch を選択して master ブランチを入力し、Next をクリックできるようにしました。
成功
成功すると、あなたのライブラリがすでにリストにあることが確認できます。
依存関係のテスト
次のように、ライブラリーのインターフェースをテストします。
はい、今のところ、依存関係は完了しています。
ライブラリに依存しています。
ライブラリ内のPackage.swiftファイルに依存関係を追加するだけです。 その方法は次のとおりです。
import PackageDescription
let package = Package(
name: "XQPackageTest",
platforms: [
.iOS(.v10),
],
products: [
.library(
name: "XQPackageTest",
targets: ["XQPackageTest"]),
],
/// サードパーティに依存する
dependencies: [
.package(url: "https://.//.it", from: .init(5, 0, 1)),
],
targets: [
.target(
name: "XQPackageTest",
dependencies: [
// 依存するサードパーティ
"SnapKit",
]),
.testTarget( name: "XQPackageTestTests", dependencies: ["XQPackageTest"]),
],
)
Package.swift
上で述べたように、Package.swiftはCocoaPodsのxxx.podspecファイルに相当します。
そこで、そのファイルの属性のいくつかを簡単に説明します。
import PackageDescription
let package = Package(
name: "XQPackageTest",
/// サポートされているプラットフォームはいくつあるか?
platforms: [
.iOS(.v10),
// .macOS(.v10_12),
// .tvOS(.v10),
// .watchOS()
],
/// ライブラリの設定
products: [
.library(
name: "XQPackageTest",
// ダイナミック・ライブラリまたはスタティック・ライブラリ
// 静的ライブラリのデフォルト
type: .static,
targets: ["XQPackageTest"]),
],
/// サードパーティに依存する
dependencies: [
// サードパーティが優れたバージョン管理形式を持っている: . .テスト・バージョン
// そして、次のようにすればよい。
.package(url: "https://.//.it", from: .init(5, 0, 1)),
// サードパーティーのバージョン形式が 1.2, 3桁目をまったく使わない場合は、次のような文字列を渡すこともできる。
// .package(url: "https://.//.it", from: .init(stringLiteral: "5.0.1")),
// サードパーティーの現在のリリースがSPMをサポートしていない場合、そのマスターブランチを直接指すことができる。
// .package(url: "https://.//.it", Package.Dependency.Requirement.branch("master")),
// もちろん、SwiftPMをサポートするローカルライブラリにリンクすることも可能だ。
// .package(path: "../XQSwiftPMTest"),
],
targets: [
// target
.target(
name: "XQPackageTest",
dependencies: [
// 関連するサードパーティ
"SnapKit",
]),
// target
.testTarget(
name: "XQPackageTestTests",
dependencies: ["XQPackageTest"]),
],
// ライブラリはSwift言語バージョンをサポートしている
swiftLanguageVersions: [
.v5
]
)
SPM OC
現在、私の知る限り、SwiftとOCを混在させることはできません。
しかし、以下のようにOCとCの両方のライブラリを書くことは可能です。
システムのデフォルトは ==Sources/[targetName]/include==パスにあるpublicな.hファイルであることに注意してください。
.h ファイルを特定のパスに変更したい場合は、ターゲットの ==publicHeadersPath== を自分で書き換える必要があります。
publicHeadersPathのデフォルトは==[Sources]/[targetName]==です。
例えば、ライブラリ全体の.hをすべて公開したい場合
上記のように、publicHeadersPath は "..." となります。/XQPackageTest "となります。
あらかじめ決められた
- クラウドにアップロードすることなく、ローカルのコードを直接関連付ける方法。 CocoaPods direct :path => '' to localのようなものです。
- 関連ライブラリ
- 関連フレームワークライブラリ
ピット
Authentication failed
SPMライブラリの更新を選択すると、以下のようなエラーが表示されることがあります。
==x-swift-package-repository-authentication://?scm=com.apple.dt.Xcode.sourcecontrol.Git&url=xxx#error=-1005 認証に失敗しました。認証情報が見つからないためです==。
一部のライブラリは非公開のため、ログインにはパスワードやその他の認証が必要です。
パスワードを使ってログインした場合、一定期間が経過すると認証が無効になります。 パスワードを再入力する必要があります。
写真の青いエラーをダブルクリックすると、入力ボックスがポップアップします。
この時点で、アカウントのパスワードを入力し、[OK]をクリックします。
ライブラリは最新の
ライブラリを修正して送信した後、時折最新のコードをプルダウンできないことがあります。
この場合、下図のように File -> Swift Packages -> Reset Package Caches を選択してください。
それでもない場合は...ライブラリを表示し、プロジェクトのビルド・キャッシュ・フォルダに移動して、プロジェクトのビルド・キャッシュを削除してください。
パス ==~/Library/Developer/Xcode/DerivedData/Your project's name-random code==
一般的に上記の操作でOK





