精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

現今 Swift 包中的二進制目標

移動開發 iOS
為了充分理解 Apple 的 Swift 團隊在二進制目標和他們引入的一些新 API 方面采取的一些步驟,我們需要理解它們從何而來。

文章目錄

  1. 理解二進制在 Swift 中的演變。
  2. 命令行工具相關。
  3. 結論。

在 iOS 和 macOS 開發中, Swift 包現在變得越來越重要。Apple 已經努力推動橋接那些縫隙,并且修復那些阻礙開發者的問題,例如阻礙開發者將他們的庫和依賴由其他諸如 Carthage[1] 或 CocoaPods[2] 依賴管理工具遷移到 Swift 包依賴管理工具的問題,例如沒有能力添加構建步驟的問題。這對任何依賴一些代碼生成的庫來說都是破壞者,比如,協議和 Swift 生成。

理解二進制在 Swift 中的演變

為了充分理解 Apple 的 Swift 團隊在二進制目標和他們引入的一些新 API 方面采取的一些步驟,我們需要理解它們從何而來。在后續的部分中,我們將調研 Apple 架構的演變,以及為什么二進制目標的 API 在過去幾年中逐漸形成的,特別是自 Apple 發布了自己的硅芯片之后。

胖二進制和 Frameworks 框架

如果你曾必須處理二進制依賴,或者你曾創建一個屬于你自己的可執行文件,你將會對 胖二進制 這個術語感到熟悉。這些被擴展(或增大)的可執行文件,是包含了為多個不同架構原生構建的切片。這允許庫的所有者分發一個運行在所有預期的目標架構上的單獨的二進制。

當源碼不能被暴露或當處理非常龐大的代碼倉庫時,預編譯庫成為可執行文件非常有意義,因為預編譯源碼以及以二進制文件分發他們,將節省構建程序在他們的應用上的構建時間。

Pods[3] 是一個非常好的例子,當開發者發現他們自己沒必要構建那些非常少改動的依賴。這是一個很共通的問題,它激發了諸如 cocoapods-binary[4] 之類的項目,該項目預編譯了 pod 依賴項以減少客戶端的構建時間。

Frameworks 框架

嵌入靜態二進制文件可能對應用程序來說已經足夠了,但如果需要某些資源(如 assets 或頭文件),則需要將這些資源與包含所有切片的 胖二進制文件 捆綁在一起,形成所謂的 frameworks 文件。

這就是諸如 Google Cast[5] 之類的預編譯庫在過渡到使用 xcframework 進行分發之前所做的事情 —— 下一節將詳細介紹這種過渡的原因。

到目前為止,一切都很好。如果我們要為分發預編譯一個庫,那么胖二進制文件聽起來很理想,對吧?并且,如果我們需要捆綁一些其他資源,我們可以只使用一個 frameworks。一個二進制來統治他們所有!

XCFrameworks 框架

好吧,不完全是。胖二進制文件有一個大問題,那就是你不能有兩個架構相同但命令/指令不同的切片。這曾經很好,因為設備和模擬器的架構總是不同的,但是隨著 Apple Silicon 計算機 (M1) 的推出,模擬器和設備共享相同的架構 (arm64),但具有不同的加載器命令。這與面向未來的二進制目標相結合,正是 Apple 引入 XCFrameworks[6] 的原因。

你可以在 Bogo Giertler 撰寫的這篇精彩文章 中詳細了解為 iOS 設備構建的 arm64 切片和為 M1 mac 的 iOS 模擬器構建的 arm64 切片之間的區別。

?XCFrameworks[7] 現在允許將多個二進制文件捆綁在一起,解決了 M1 Mac 引入的設備和模擬器沖突架構問題,因為我們現在可以為每個用例提供包含相關切片的二進制文件。事實上,如果我們需要,我們可以走得更遠,例如,在同一個 xcframework 中捆綁一個包含 iOS 目標的 UIKit? 接口的二進制文件和一個包含 macOS 的 AppKit 接口的二進制文件,然后讓 Xcode 基于期望的目標架構決定使用哪一個。

在 Swift 包中,那先能夠以 binaryTarget[8] 被包含進項目的,能夠在包中被引入任意其他目標。這相同的操作同樣適用于 frameworks。

命令行工具相關

由于 Swift 5.6 版本中引入了用于 Swift 包管理器的 可擴展構建工具[9] ,因此可以在構建過程中的不同時間執行命令。

這是 iOS 社區長期以來一直強烈要求的事情,例如格式化源代碼、代碼生成甚至收集公制代碼庫的指標。Swift 5.6 中所有這些所謂的 插件[10] 最終都需要調用可執行文件來執行特定任務。這是二進制文件再次在 Swift 包中參與的地方。

在大多數情況下,對于我們 iOS 開發人員來說,這些工具將來自同時支持 macOS 的不同架構切片 —— Apple Silicon 的 arm64 架構和 Intel Mac 的 x86_64 架構。開發者工具如, SwiftLint[11] 或 SwiftGen[12] 正是這種案例。在這種情況下,可以使用包含可執行文件(本地或遠程)的 .zip 文件的路徑創建新的二進制目標。

注意可執行文件必須在.zip文件的根目錄下,否則找不到。

Artifact Bundles

到目前為止,命令行工具所采用的方法僅適用于 macOS 架構。但我們不能忘記,Linux 機器也支持 Swift 包。這意味著如果要同時支持 M1 macs (arm64?) 和 Linux arm64? 機器,上面的胖二進制方法將不起作用 —— 請記住,二進制不能包含具有相同架構的多個切片。在這個階段可能有人會想,我們可以不只使用 xcframeworks 嗎?不,因為它們在 Linux 操作系統上不受支持!

Apple 已經考慮到這一點,除了引入 可擴展構建工具[13] 之外,Artifact Bundles[14] 和對二進制目標的其他改進也作為 Swift 5.6 的一部分發布。

工件包(Artifact Bundles) 是包含 工件 的目錄。這些工件需要包含支持架構的所有不同二進制文件。二進制文件和支持的架構的路徑是使用清單文件 (info.json) 指定的,該文件位于 Artifact Bundle 目錄的根目錄中。你可以將此清單文件視為一個地圖或指南,以幫助 Swift 確定哪些可執行文件可用于哪種架構以及可以在哪里找到它們。

以 SwiftLint 為例

?SwiftLint[15] 在整個社區中被廣泛用作 Swift 代碼的靜態代碼分析工具。由于很多人都非常渴望讓這個插件在他們的 SwiftPM 項目中運行,我認為這將是一個很好的例子來展示我們如何將分發的可執行文件從他們的發布頁面變成一個與 macOS 架構和 Linux arm64 兼容的工件包。

讓我們從下載兩個可執行文件(macOS[16] 和 Linux[17])開始。

至此,bundle的結構就可以創建好了。為此,創建一個名為 swiftlint.artifactbundle? 的目錄并在其根目錄添加一個空的 info.json:

mkdir swiftlint.artifactbundle
touch swiftlint.artifactbundle/info.json

現在可以使用 schemaVersion 填充清單文件,這可能會在未來版本的工件包和具有兩個變體的工件中發生變化,這將很快定義:

{
"schemaVersion": "1.0",
"artifacts": {
"swiftlint": {
"version": "0.47.0", # The version of SwiftLint being used
"type": "executable",
"variants": [
]
},
}
}

需要做的最后一件事是將二進制文件添加到包中,然后將它們作為變體添加到 info.json? 文件中。讓我們首先創建目錄并將二進制文件放入其中(macOS 的一個在 swiftlint-macos/swiftlint?,Linux 的一個在 swiftlint-linux/swiftlint)。

添加這些之后,可以在清單文件中變量:

{
"schemaVersion": "1.0",
"artifacts": {
"swiftlint": {
"version": "0.47.0", # The version of SwiftLint being used
"type": "executable",
"variants": [
{
"path": "swiftlint-macos/swiftlint",
"supportedTriples": ["x86_64-apple-macosx", "arm64-apple-macosx"]
},
{
"path": "swiftlint-linux/swiftlint",
"supportedTriples": ["x86_64-unknown-linux-gnu"]
},
]
},
}
}

為此,需要為每個變量指定二進制文件的相對路徑(從工件包目錄的根目錄)和支持的三元組。如果您不熟悉 目標三元組[18],它們是一種選擇構建二進制文件的架構的方法。請注意,這不是 主機(構建可執行文件的機器)的體系結構,而是 目標 機器(應該運行所述可執行文件的機器)。

這些三元組具有以下格式: ----? 并非所有字段都是必需的,如果其中一個字段未知并且要使用默認值,則可以省略或替換為 unknown 關鍵字。

可執行文件的架構切片可以通過運行 file 找到,這將打印捆綁的任何切片的供應商、系統和架構。在這種情況下,為這兩個命令運行它會顯示:

swiftlint-macos/swiftlint

swiftlint: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
swiftlint (for architecture x86_64): Mach-O 64-bit executable x86_64
swiftlint (for architecture arm64): Mach-O 64-bit executable arm64

swiftlint-linux/swiftlint

-> file swiftlint
swiftlint: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, with debug_info, not stripped

這帶來了上面顯示的 macOS 支持的兩個三元組(x86_64-apple-macosx、arm64-apple-macosx?)和 Linux 支持的一個三元組(x86_64-unknown-linux-gnu)。

與 XCFrameworks 類似,工件包也可以通過使用 binaryTarget 包含在 Swift 包中。

結論

簡而言之,我們可以總結 2022 年如何在 Swift 包中使用二進制文件的最佳實踐,如下所示:

  1. 如果你需要為你的 iOS/macOS 項目添加預編譯庫或可執行文件,您應該使用XCFramework,并為每個用例(iOS 設備、macOS 設備和 iOS 模擬器)包含單獨的二進制文件。
  2. 如果你需要創建一個插件并運行一個可執行文件,你應該將其嵌入為一個工件包,其中包含適用于不同支持架構的二進制文件。

參考資料

[1] Carthage: https://github.com/Carthage/Carthage。

[2] CocoaPods: https://github.com/CocoaPods/CocoaPods。

[3] Pods: https://cocoapods.org/。

[4] cocoapods-binary: https://github.com/leavez/cocoapods-binary。

[5] Google: https://developers.google.com/cast/docs/ios_sender#manual_setup。

[6] XCFrameworks: https://developer.apple.com/videos/play/wwdc2019/416/。

[7] XCFrameworks: https://help.apple.com/xcode/mac/11.4/#/dev6f6ac218b。

[8] binaryTarget: https://developer.apple.com/documentation/swift_packages/distributing_binary_frameworks_as_swift_packages。

[9] Extensible Build Tools: https://github.com/apple/swift-evolution/blob/main/proposals/0303-swiftpm-extensible-build-tools.md。

[10] Plugins: https://github.com/apple/swift-evolution/blob/main/proposals/0303-swiftpm-exte""nsible-build-tools.md#plugin-api。

[11] SwiftLint: https://github.com/realm/SwiftLint。

[12] SwiftGen: https://github.com/SwiftGen/SwiftGen。

[13] Extensible Build Tools: https://github.com/apple/swift-evolution/blob/main/proposals/0303-swiftpm-extensible-build-tools.md。

[14] Artifact Bundles: https://github.com/apple/swift-evolution/blob/main/proposals/0305-swiftpm-binary-target-improvements.md。

[15] SwiftLint: https://github.com/realm/SwiftLint。

[16] macOS: https://github.com/realm/SwiftLint/releases/download/0.47.0/portable_swiftlint.zip。

[17] Linux: https://github.com/realm/SwiftLint/releases/download/0.47.0/swiftlint_linux.zip。

[18] target-triples: https://clang.llvm.org/docs/CrossCompilation.html#target-triples。

責任編輯:姜華 來源: Swift社區
相關推薦

2017-04-11 10:48:53

JS二進制

2015-07-21 11:43:14

CentosRPM

2024-01-31 09:55:53

2023-09-18 23:50:25

二進制文件裁剪Layout

2009-02-27 09:37:33

Google二進制代碼

2021-04-30 07:56:56

MySQL數據庫二進制包安裝

2010-10-13 15:45:23

MySQL二進制日志

2025-01-26 10:21:54

2018-10-22 14:37:16

二進制數據存儲

2022-10-31 08:02:42

二進制計算乘法

2023-06-25 13:00:04

2011-05-25 14:10:38

浮點數

2021-11-10 09:15:00

CPU01 二進制Linux

2021-01-14 09:40:54

漏洞macOS屬性表文件

2009-12-16 10:49:42

Ruby操作二進制文件

2022-07-26 13:00:01

安全符號源代碼

2010-06-09 13:02:29

MySQL啟用二進制日

2009-08-12 18:06:53

C#讀取二進制文件

2020-10-10 14:27:01

kubernetes 二進制部署

2010-04-16 09:42:25

Fedora 13Nvidia二進制驅動
點贊
收藏

51CTO技術棧公眾號

四虎精品在线观看| 永久av在线| 日韩精品福利网| 久久伊人色综合| 久久免费精品国产| 色猫猫成人app| 一区二区成人在线观看| 日韩av不卡播放| 国产哺乳奶水91在线播放| 欧美亚洲一区| 欧美极品美女视频网站在线观看免费| 国产精品一二三区在线观看| 免费一级欧美片在线观看网站| 精品日本美女福利在线观看| 秋霞在线一区二区| 蜜桃视频在线观看网站| 国产69精品久久久久毛片 | x88av在线| av男人一区| 91精品国产丝袜白色高跟鞋| 日韩欧美一区二| 91蜜桃在线视频| 中文字幕成人网| 久久久久综合一区二区三区| 99精品在线看| 老司机精品视频一区二区三区| 久久久久久免费精品| 午夜激情视频在线播放| 国产精品视频一区二区三区四蜜臂| 91麻豆精品久久久久蜜臀| 精品国产免费av| 丰满诱人av在线播放| 国产精品久久久久影院老司| 欧美h视频在线| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 九九国产精品视频| 国产精品美女999| 日韩欧美在线观看免费| 9色国产精品| 久久久久久com| 极品盗摄国产盗摄合集| 999久久久精品国产| 尤物九九久久国产精品的分类| 四虎永久免费影院| 欧美顶级毛片在线播放| 亚洲成年人在线| 日本性生活一级片| 国产 日韩 欧美 综合 一区| 日韩欧美国产精品| 精品久久久久久无码人妻| 亚洲精品在线国产| 欧美变态tickle挠乳网站| av不卡中文字幕| theporn国产在线精品| 日韩女优视频免费观看| 91精产国品一二三| 成人影院中文字幕| 亚洲激情电影中文字幕| 性久久久久久久久久久| 久久99国内| 国产亚洲免费的视频看| 免费看一级黄色| 久久久久电影| 欧美激情在线观看视频| 日韩成人高清视频| 欧美在线综合| 国产一区二区视频在线观看| 国产日韩免费视频| 成人午夜在线免费| 欧美国产综合视频| 乱人伦中文视频在线| 亚洲天堂精品视频| 男人添女荫道口图片| 中文字幕这里只有精品| 精品视频一区二区不卡| 久久久精品视频国产| 欧美大片91| 亚洲国产欧美在线成人app| 国产精品亚洲无码| 91综合视频| 久久久久久久久久久人体| 黄色大片网站在线观看| 青青国产91久久久久久| 99re视频在线| 青青草免费观看免费视频在线| 日本一区二区综合亚洲| 300部国产真实乱| 人人鲁人人莫人人爱精品| 欧美男生操女生| 免费的av网站| 欧美电影免费| 2019中文字幕免费视频| 91中文字幕在线播放| 成人综合在线网站| 日韩视频精品| 欧美激情成人动漫| 欧美午夜精品免费| 艳妇乳肉豪妇荡乳xxx| 日韩片欧美片| 欧美在线激情网| 国产精品伊人久久| 97se亚洲国产综合自在线不卡| 亚洲一区二区三区午夜| 黄视频网站在线观看| 在线播放欧美女士性生活| 国产在线观看无码免费视频| 在线成人激情| 国产日韩欧美另类| 午夜影院免费体验区| 一区二区在线观看免费| 福利在线一区二区三区| 日韩深夜影院| 欧美激情极品视频| 国产免费一区二区三区免费视频| 久久免费精品国产久精品久久久久| 国产人妻人伦精品| 亚洲伦理一区二区| 在线精品高清中文字幕| 国产成人在线观看网站| 国产 日韩 欧美大片| 一区二区三区视频在线播放| 亚洲第一影院| 精品性高朝久久久久久久| 国产一级免费av| 国产精品乡下勾搭老头1| 亚洲电影网站| jizz免费一区二区三区| 国产丝袜精品视频| 久久久久久久久久免费视频 | 色菇凉天天综合网| 波多野结衣影院| 在线成人国产| 国产精品入口免费| 在线中文字幕视频观看| 91精品国产综合久久久久| 91ts人妖另类精品系列| 奇米精品一区二区三区在线观看 | 97视频热人人精品免费| 国产欧美日韩高清| 香蕉视频免费在线播放| 欧美日韩午夜在线视频| 日韩精品久久久久久久的张开腿让| 青青草成人在线观看| 亚洲国产日韩美| 老司机精品视频网| 日韩一级黄色av| 国产精品高潮呻吟av| 中文字幕中文字幕在线一区 | 激情视频网站在线观看| 久久精品一区二区三区不卡 | 91色porny在线视频| 久草热视频在线观看| 午夜a一级毛片亚洲欧洲| 26uuu亚洲国产精品| 你懂的在线观看视频网站| 色美美综合视频| 天天操天天摸天天舔| 国产一区二区在线观看视频| 91免费版看片| 国产图片一区| 日本亚洲欧洲色α| aaa在线免费观看| 91麻豆精品国产91久久久 | 激情偷拍久久| 看高清中日韩色视频| 日本欧美韩国| 久久av中文字幕| 特级丰满少妇一级aaaa爱毛片| 精品日本高清在线播放| 欧美亚洲色综久久精品国产| 狠狠色丁香婷婷综合| 屁屁影院ccyy国产第一页| 欧美亚洲国产日韩| 国产美女精品视频| 欧美6一10sex性hd| 亚洲摸下面视频| 在线观看色网站| 亚洲第一搞黄网站| 三级网站在线免费观看| 国产一区二区剧情av在线| 日韩中字在线观看| 成人婷婷网色偷偷亚洲男人的天堂| 91亚洲一区精品| 免费h在线看| 久久精品久久精品亚洲人| 天天操天天干天天| 欧美性一级生活| 久久老司机精品视频| 国产日韩综合av| 男生和女生一起差差差视频| 先锋亚洲精品| 国产情侣第一页| 色777狠狠狠综合伊人| 国产伦一区二区三区色一情| 欧美风情在线视频| 2024亚洲男人天堂| 午夜羞羞小视频在线观看| 国产午夜精品一区理论片飘花| 99久久国产免费| 日本久久一区二区| 久久久一区二区三区四区| 国产精品入口麻豆九色| 五十路六十路七十路熟婆| 久久成人麻豆午夜电影| 六月丁香婷婷在线| 国产精品啊v在线| 在线观看免费91| 亚洲小说图片| 国产精品乱子乱xxxx| 亚洲伦理网站| 国产精品观看在线亚洲人成网| xxxx成人| 久久99精品久久久久久青青91 | www.涩涩涩| 亚洲一区观看| 精品少妇人欧美激情在线观看| 欧美激情777| 日韩欧美一区二区在线观看 | 久久综合色88| 伊人免费在线| 中文字幕欧美亚洲| 国模精品一区二区| 亚洲欧美精品一区| 无码精品人妻一区二区| 精品精品欲导航| www.亚洲天堂.com| 7777精品伊人久久久大香线蕉超级流畅| 波多野结衣 久久| 日韩欧美高清在线视频| 激情五月色婷婷| 亚洲一区二区黄色| 久久久久亚洲av成人片| 亚洲在线视频一区| 欧美日韩综合一区二区| 亚洲免费观看高清完整版在线观看熊| 国产aaaaaaaaa| 国产精品丝袜一区| 在线免费看视频| 亚洲国产激情av| 少妇太紧太爽又黄又硬又爽小说| 国产亚洲欧美日韩日本| 国产精品扒开腿做爽爽| 久久久久免费观看| 亚洲自拍偷拍图| 日本一区二区三区久久久久久久久不 | 欧美国产极品| 免费在线国产精品| 精品欧美激情在线观看| 日韩午夜视频在线观看| 欧美日韩水蜜桃| 特级毛片在线免费观看| 欧美在线91| 国产成人一区二区三区别| 激情丁香综合| 91国视频在线| 日韩在线a电影| 色婷婷一区二区三区av免费看| 老司机一区二区| 日韩精品在线播放视频| 顶级嫩模精品视频在线看| 亚洲国产精品无码久久久久高潮| 久久一区二区三区四区| 在线免费看视频| 一区二区三区中文字幕精品精品| 国产中文字幕免费| 欧美性xxxxxxxxx| 在线免费观看av片| 日韩一卡二卡三卡四卡| 秋霞欧美在线观看| 亚洲欧美在线播放| 免费黄色在线看| 欧美激情一区二区三级高清视频| 亚洲人体影院| 成人免费网站在线看| 国语一区二区三区| 日本在线视频不卡| 亚洲一区在线| 亚洲中文字幕无码专区| 麻豆精品精品国产自在97香蕉| 涩多多在线观看| 成人网在线免费视频| 欧美性猛交xxxx乱| 亚洲激情欧美激情| 中文字幕在线播| 日韩视频免费观看高清完整版在线观看| 亚洲成a人片在线| 国产午夜精品一区理论片飘花| 超碰最新在线| 国产91色在线免费| 日韩高清二区| 欧美日韩亚洲一区二区三区在线观看 | 成人激情综合网站| 卡一卡二卡三在线观看| 亚洲专区一二三| 中文字幕人妻互换av久久| 日韩欧美国产不卡| av在线天堂播放| 久久久久久久久久婷婷| 欧美高清xxx| 欧美成人一区二区在线| 欧美特黄一区| 久久人人爽av| 国产午夜精品在线观看| 国产精品30p| 制服.丝袜.亚洲.中文.综合| 免费在线性爱视频| 久久久久久久久爱| 亚洲色图综合| 色之综合天天综合色天天棕色| 国产综合婷婷| 污网站在线免费| 欧美国产激情二区三区 | 欧美精品免费视频| 牛牛澡牛牛爽一区二区| 欧美激情aaaa| 精品三级久久久| 亚洲不卡1区| 国产日韩一区| 精品无码av一区二区三区| 亚洲日本护士毛茸茸| 在线免费观看高清视频| 亚洲天堂av电影| 中文日产幕无线码一区二区| 国产伦理久久久| 亚洲午夜av| 性生交大片免费看l| 亚洲精品中文在线观看| 91中文字幕在线播放| 精品国产欧美一区二区三区成人| 99re66热这里只有精品4| 免费国产一区| 媚黑女一区二区| 无码人妻精品一区二区三应用大全 | 亚洲一区尤物| 久久精品久久精品| 日韩av网站在线播放| 欧美日韩一区二区三区四区五区 | 日本精品中文字幕| 一区二区导航| 成人精品视频一区二区| 久久久影院官网| 国产性生活视频| 亚洲日本中文字幕| 91tv亚洲精品香蕉国产一区| 色吧亚洲视频| 久久精品国产999大香线蕉| 波多野结衣家庭教师在线观看| 欧美三级电影在线看| 成人77777| 国产日韩专区在线| 91欧美在线| av在线免费观看不卡| 樱桃国产成人精品视频| 国精产品乱码一区一区三区四区| 久久久久久久久久久成人| 欧美理伦片在线播放| 少妇性饥渴无码a区免费| 久久九九国产精品| 中文字幕乱码人妻二区三区| 日韩一区二区福利| 8848成人影院| 国产亚洲欧美在线视频| 久久尤物电影视频在线观看| 久久午夜鲁丝片| 久久精品国产亚洲7777| 1204国产成人精品视频| 国产无限制自拍| 国产丝袜在线精品| 国产精品久久久久久在线| 欧美激情亚洲综合一区| 亚洲丁香日韩| www.51色.com| 亚洲成人自拍偷拍| 成人一区二区不卡免费| 亚洲综合视频1区| 免费中文字幕日韩欧美| 永久免费未视频| 亚洲第一福利在线观看| 色成人免费网站| 热久久最新网址| 2021国产精品久久精品| 亚洲一区二区激情| 久久久之久亚州精品露出| 精品一区二区三区的国产在线观看| 网站在线你懂的| 精品magnet| 国产日产一区二区| 久久综合中文色婷婷| 国产一区二区在线电影| 国产嫩bbwbbw高潮| 欧美美最猛性xxxxxx| 免费成人高清在线视频theav| 国内自拍第二页| 欧美性猛交视频| а√天堂在线官网| 欧美日韩亚洲综合一区二区三区激情在线| 久久 天天综合| 国产午夜免费福利| 欧美日韩不卡合集视频| 全球成人免费直播|