日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)IOS教程:使用Xcode創(chuàng)建獨(dú)立Swift軟件包

概覽

Swift 軟件包是可復(fù)用的 Swift、Objective-C、Objective-C++、C 或 C++ 代碼組件。它們可以捆綁資源,將代碼作為二進(jìn)制文件來提供,或者依賴于其他軟件包。Swift 軟件包可用于捆綁可執(zhí)行代碼 (例如,將腳本捆綁為“可執(zhí)行產(chǎn)品”),或用于創(chuàng)建軟件包來將可共享的代碼作為“資源庫產(chǎn)品”提供。用于提供資源庫產(chǎn)品的軟件包有助于促進(jìn)代碼模塊化發(fā)展,方便與他人共享代碼,而且也利于其他開發(fā)者在其 App 中添加功能。

成都創(chuàng)新互聯(lián)業(yè)務(wù)包括:成品網(wǎng)站、企業(yè)產(chǎn)品展示型網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計(jì)、電子商務(wù)型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)(多語言)、商城開發(fā)、按需求定制網(wǎng)站、全網(wǎng)營銷推廣等。效率優(yōu)先,品質(zhì)保證,用心服務(wù)是我們的核心價(jià)值觀,我們將繼續(xù)以良好的信譽(yù)為基礎(chǔ),秉承穩(wěn)固與發(fā)展、求實(shí)與創(chuàng)新的精神,為客戶提供更全面、更優(yōu)質(zhì)的互聯(lián)網(wǎng)服務(wù)!

通過 Xcode,你可以創(chuàng)建新的 Swift 軟件包,添加代碼、資源文件和二進(jìn)制文件,構(gòu)建 Swift 軟件包,并且運(yùn)行單元測試。

創(chuàng)建 Swift 軟件包

要?jiǎng)?chuàng)建新的 Swift 軟件包,請打開 Xcode,然后選擇“File”(文件) >“New”(新建) >“Swift Package”(Swift 軟件包)。選取名稱并選擇文件位置。選擇“Create Git repository on my Mac”(在我的 Mac 上創(chuàng)建 Git 儲(chǔ)存庫),以將你的軟件包置于版本控制下。完成后,Swift 軟件包會(huì)在 Xcode 中打開,就像是一個(gè)標(biāo)準(zhǔn)的 Xcode 項(xiàng)目。在創(chuàng)建 Swift 軟件包時(shí),Xcode 會(huì)生成所有必要的文件和文件夾:

  • README.md 文件位于軟件包的根目錄下。它會(huì)提供 Swift 軟件包功能的描述。

  • Package.swift 文件 (即“軟件包清單”) 描述 Swift 軟件包的配置。你可以在訪達(dá)中連按兩次該文件來在 Xcode 中打開對(duì)應(yīng)的軟件包。軟件包清單使用 Swift 和 PackageDescription 框架來定義軟件包的名稱、產(chǎn)品、目標(biāo),以及對(duì)其他軟件包的依賴項(xiàng)等。

  • 源代碼文件位于名為 Sources 的文件夾中,并根據(jù) Target (英文) 來設(shè)定作用域。一個(gè) Swift 軟件包可以包含多個(gè)目標(biāo),并且按照慣例,各目標(biāo)的代碼位于自己的子文件夾中。

  • 單元測試目標(biāo)位于名為 Tests 的文件夾中,并且遵循與標(biāo)準(zhǔn)目標(biāo)相同的慣例,各測試目標(biāo)的代碼分別位于自己的子文件夾中。

配置你的 Swift 軟件包

Swift 軟件包不使用 .xcproject.xcworkspace,但依賴于它們的文件夾結(jié)構(gòu),并且使用軟件包清單來進(jìn)行其他配置。以下代碼摘錄顯示了一個(gè)簡單的軟件包清單。它聲明了 MyLibrary 目標(biāo),并使用同一名稱將它作為資源庫產(chǎn)品來提供。

 // swift-tools-version:5.3 import PackageDescription   let package = Package(  name: "MyLibrary",  platforms: [  .macOS(.v10_14), .iOS(.v13), .tvOS(.v13)  ],  products: [  // Products define the executables and libraries a package produces, and make them visible to other packages.  .library(  name: "MyLibrary",  targets: ["MyLibrary", "SomeRemoteBinaryPackage", "SomeLocalBinaryPackage"])  ],  dependencies: [  // Dependencies declare other packages that this package depends on.  ],  targets: [  // Targets are the basic building blocks of a package. A target can define a module or a test suite.  // Targets can depend on other targets in this package, and on products in packages this package depends on.  .target(  name: "MyLibrary",  exclude: ["instructions.md"],  resources: [  .process("text.txt"),  .process("example.png"),  .copy("settings.plist")  ]  ),  .binaryTarget(  name: "SomeRemoteBinaryPackage",  url: "https://url/to/some/remote/binary/package.zip",  checksum: "The checksum of the XCFramework inside the ZIP archive."  ),  .binaryTarget(  name: "SomeLocalBinaryPackage",  path: "path/to/some.xcframework"  )  .testTarget(  name: "MyLibraryTests",  dependencies: ["MyLibrary"]),  ] )

軟件包清單的開頭必須是字符串 // swift-tools-version:,后跟版本號(hào),例如 // swift-tools-version:5.3。

Swift 工具版本聲明以下內(nèi)容:

  • PackageDescription 框架的版本

  • 用于處理清單的 Swift 語言兼容版本

  • 使用該軟件包所需的最低 Swift 工具版本

每個(gè)版本的 Swift 都可能會(huì)推出 PackageDescription 框架更新,但以前的 API 版本仍可供聲明較舊 Swift 工具版本的軟件包使用。這樣一來,你便可以利用新版本的 Swift、Swift 工具和 PackageDescription 框架,而無需更新你的軟件包清單,也不會(huì)失去對(duì)現(xiàn)有軟件包的訪問。

要進(jìn)一步了解 PackageDescription 框架,請參閱“Package (英文)”。

注釋

在你編輯軟件包清單時(shí),Xcode 會(huì)提供代碼補(bǔ)全功能。

添加你的代碼

根據(jù)慣例,源代碼文件位于軟件包的 Sources 目錄下的子文件中,文件夾名稱與它們所屬的目標(biāo)相同。注意上方的軟件包清單是如何聲明 MyLibrary 目標(biāo)的。其源代碼文件位于 Sources/MyLibrary 中,用于測試的源代碼文件則位于 Sources/MyLibraryTests 中。你可以利用其他子文件夾來組織它們的結(jié)構(gòu)。默認(rèn)情況下,Xcode 將所有有效的源代碼文件包含在目標(biāo)的文件夾中。如果想要以顯式方式聲明所含的源代碼文件,請?jiān)诔跏蓟?Target (英文) 時(shí)使用 sources (英文) 參數(shù)來傳遞它們。也可以傳遞目錄的路徑。

要將源代碼文件添加到 Swift 軟件包中,可以利用你已熟知的工作流程。例如,你可以將源代碼文件拖入項(xiàng)目導(dǎo)航器來將其添加到軟件包中,也可以使用“File”(文件) >“Add Files to [packageName]”(添加文件至 [packageName]) 菜單來添加。目標(biāo)可以包含 Swift、Objective-C/C++ 或 C/C++ 代碼,但一個(gè)目標(biāo)中不能混合 Swift 和 C 系列語言。例如,一個(gè) Swift 軟件包可以有兩個(gè)目標(biāo),一個(gè)目標(biāo)含有 Objective-C、Objective-C++ 和 C 代碼,另一個(gè)則包含 Swift 代碼。

添加對(duì)其他 Swift 軟件包的依賴項(xiàng)

與 App 一樣,Swift 軟件包可以擁有“軟件包依賴項(xiàng)”。要聲明對(duì)遠(yuǎn)程軟件包的依賴項(xiàng),可以使用任何一種將遠(yuǎn)程軟件包 URL 作為參數(shù)的函數(shù)。要將本地軟件包添加為依賴項(xiàng),可以使用任何一種將本地軟件包路徑作為參數(shù)的函數(shù)。以下代碼片段顯示了這兩種選項(xiàng):

 dependencies: [   // Dependencies declare other packages that this package depends on.  .package(url: "https://url/of/another/package.git", from: "1.0.0"),  .package(path: "path/to/a/local/package/", "1.0.0"..<"2.0.0")],

請參閱 Package.Dependency (英文),以了解所有可用來聲明軟件包依賴項(xiàng)的方式。在添加依賴項(xiàng)時(shí),你可以將其提供的產(chǎn)品用作 Target.Dependency (英文),或使它成為軟件包的 Product (英文) 的一部分。

將二進(jìn)制文件作為 Swift 軟件包進(jìn)行分發(fā)

除了分發(fā)提供源代碼文件的 Swift 軟件包外,也可以選擇分發(fā)二進(jìn)制文件。例如,專有閉源資源庫的創(chuàng)建者通常以二進(jìn)制文件形式提供這些資源庫。要了解更多信息,請參閱“將二進(jìn)制框架作為 Swift 軟件包進(jìn)行分發(fā) (英文)”。

添加軟件包資源

在你的清單文件中聲明 Swift 工具版本 5.3 或更高版本,以將素材文件作為軟件包資源添加到 Swift 軟件包中。例如,Swift 軟件包可以包含使用素材目錄、Storyboard 和 .strings 文件等的用戶界面組件。要了解更多信息,請參閱“使用 Swift 軟件包捆綁資源 (英文)”。

使你的 Swift 軟件包能夠跨平臺(tái)兼容

盡管 Swift 軟件包在本質(zhì)上獨(dú)立于平臺(tái),并包含 Linux 等目標(biāo)平臺(tái),但是 Swift 軟件包可能是針對(duì)特定平臺(tái)的。你可以使用條件編譯塊來處理平臺(tái)專有代碼并實(shí)現(xiàn)跨平臺(tái)兼容性。以下示例顯示了如何使用條件編譯塊:

 #if os(Linux)   // Code specific to Linux   #elseif os(macOS)   // Code specific to macOS   #endif   #if canImport(UIKit)   // Code specific to platforms where UIKit is available   #endif

此外,你可能需要定義最低部署目標(biāo)。注意以下軟件包清單如何通過將最低部署目標(biāo)作為值傳遞給 Package (英文) 構(gòu)造器的 platforms 參數(shù)。但是,將最低部署目標(biāo)傳遞給該構(gòu)造器不會(huì)將軟件包限制到列出的平臺(tái)。

 // swift-tools-version:5.3 import PackageDescription   let package = Package(  name: "MyLibrary",  platforms: [  .macOS(.v10_14), .iOS(.v13), .tvOS(.v13)  ],  products: [  // Products define the executables and libraries a package produces, and make them visible to other packages.  .library(  name: "MyLibrary",  targets: ["MyLibrary", "SomeRemoteBinaryPackage", "SomeLocalBinaryPackage"])  ],  dependencies: [  // Dependencies declare other packages that this package depends on.  ],  targets: [  // Targets are the basic building blocks of a package. A target can define a module or a test suite.  // Targets can depend on other targets in this package, and on products in packages this package depends on.  .target(  name: "MyLibrary",  exclude: ["instructions.md"],  resources: [  .process("text.txt"),  .process("example.png"),  .copy("settings.plist")  ]  ),  .binaryTarget(  name: "SomeRemoteBinaryPackage",  url: "https://url/to/some/remote/binary/package.zip",  checksum: "The checksum of the XCFramework inside the ZIP archive."  ),  .binaryTarget(  name: "SomeLocalBinaryPackage",  path: "path/to/some.xcframework"  )  .testTarget(  name: "MyLibraryTests",  dependencies: ["MyLibrary"]),  ] )

提示

如果你計(jì)劃發(fā)布 Swift 軟件包,而且該軟件包僅支持部分平臺(tái),請考慮在 README.md 文件中列出受支持的平臺(tái)。此外,也請考慮添加對(duì)其他平臺(tái)的支持,以便擴(kuò)大受眾范圍。

構(gòu)建目標(biāo)并運(yùn)行單元測試

Xcode 會(huì)在軟件包清單中為每個(gè)產(chǎn)品創(chuàng)建一個(gè)方案。為軟件包的構(gòu)建和運(yùn)行目的地選擇一個(gè)方案,并像構(gòu)建 App 目標(biāo)一樣進(jìn)行構(gòu)建。每個(gè)源代碼目標(biāo)通常至少有一個(gè)對(duì)應(yīng)的測試目標(biāo)。如果你的軟件包中包含多個(gè)產(chǎn)品,Xcode 會(huì)使用名稱 [packageName]-Package 來創(chuàng)建一個(gè)額外方案,以構(gòu)建所有目標(biāo)并運(yùn)行所有單元測試。


文章標(biāo)題:創(chuàng)新互聯(lián)IOS教程:使用Xcode創(chuàng)建獨(dú)立Swift軟件包
文章出自:http://www.5511xx.com/article/djihdgh.html