[iOS] CocoaPods - Podspec文件配置

前言:在構(gòu)建自己的組件庫中酒请,我們會(huì)經(jīng)常編輯.podspec文件霎肯,進(jìn)行一些配置項(xiàng)柑土,但是有一些確實(shí)還是不太清楚逆济,這里統(tǒng)一學(xué)習(xí)一下酌予,內(nèi)容翻譯自官方文檔:https://guides.cocoapods.org/syntax/podspec.html

1. Specification (規(guī)范)

Specification描述了關(guān)于Pod庫所有配置奖慌。包括從何處獲取源代碼抛虫、使用哪些文件、應(yīng)用構(gòu)建設(shè)置以及其他一般元數(shù)據(jù)(如名稱简僧、版本和描述)的詳細(xì)信息建椰。

可以直接使用pod spec create命令來為已有組件項(xiàng)目生成一個(gè).podspec文件。但是一般我們創(chuàng)建組件時(shí)都會(huì)使用pod lib init命令岛马,會(huì)同時(shí)生成.podspec文件广凸。

來看一個(gè)比較簡單的.podspec文件阅茶,內(nèi)容如下:

Pod::Spec.new do |spec|
  spec.name         = 'Reachability'
  spec.version      = '3.1.0'
  spec.license      = { :type => 'BSD' }
  spec.homepage     = 'https://github.com/tonymillion/Reachability'
  spec.authors      = { 'Tony Million' => 'tonymillion@gmail.com' }
  spec.summary      = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'
  spec.source       = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }
  spec.source_files = 'Reachability.{h,m}'
  spec.framework    = 'SystemConfiguration'
end

再看一個(gè)比較詳細(xì)的,內(nèi)容如下:

Pod::Spec.new do |spec|
  spec.name          = 'Reachability'
  spec.version       = '3.1.0'
  spec.license       = { :type => 'BSD' }
  spec.homepage      = 'https://github.com/tonymillion/Reachability'
  spec.authors       = { 'Tony Million' => 'tonymillion@gmail.com' }
  spec.summary       = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'
  spec.source        = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }
  spec.module_name   = 'Rich'
  spec.swift_version = '4.0'

  spec.ios.deployment_target  = '9.0'
  spec.osx.deployment_target  = '10.10'

  spec.source_files       = 'Reachability/common/*.swift'
  spec.ios.source_files   = 'Reachability/ios/*.swift', 'Reachability/extensions/*.swift'
  spec.osx.source_files   = 'Reachability/osx/*.swift'

  spec.framework      = 'SystemConfiguration'
  spec.ios.framework  = 'UIKit'
  spec.osx.framework  = 'AppKit'

  spec.dependency 'SomeOtherPod'
end

有一些是我們常見的谅海,有的是還沒有見過的脸哀,這次都來了解并學(xué)習(xí)一下。

2. Root specification (根規(guī)范)

Root specification應(yīng)用于整個(gè)pod庫扭吁,包含分為必填和選填項(xiàng)撞蜂。

選項(xiàng) 是否必填 描述
name 必填 庫的名字
version 必填 庫的版本號(hào)
swift_versions 選填 支持的Swift版本
cocoapods_version 選填 支持的cocoapods版本
authors 必填 作者信息
social_media_url 選填 作者第三方社交平臺(tái)url
license 必填 許可證
homepage 必填 pod首頁地址
readme 選填 readme文件地址
changelog 選填 changelog文件地址
source 必填 源文件地址
summary 必填 庫描述
description 選填 庫詳細(xì)描述
screenshots 選填 庫的截圖
documentation_url 選填 庫的文檔url
prepare_command 選填 在安裝前執(zhí)行的腳本
static_framework 選填 是否是靜態(tài)framework的形式
deprecated 選填 標(biāo)記庫是否被廢棄
deprecated_in_favor_of 選填 標(biāo)明庫的名字被廢棄

2.1 name (必填)

pod庫的名字,我們搜索和導(dǎo)入的時(shí)候都會(huì)用到名字侥袜。

spec.name = 'AFNetworking'

2.2 version(必填)

pod庫的版本號(hào)蝌诡,一般都會(huì)和打的標(biāo)簽保持一致。

spec.version = '0.0.1'

2.3 swift_versions(選填)

規(guī)范支持的Swift版本枫吧。CocoaPods會(huì)將“4”視為“4.0”浦旱,而不是“4.1”或“4.2”。

注意:Swift編譯器主要接受主版本九杂,有時(shí)也會(huì)支持小版本颁湖。雖然CocoaPods允許指定小版本或補(bǔ)丁版本,但Swift編譯器可能不會(huì)完全遵守例隆。

# 支持多種寫法
spec.swift_versions = ['3.0']
spec.swift_versions = ['3.0', '4.0', '4.2']
spec.swift_version = '3.0'
spec.swift_version = '3.0', '4.0'

2.4 cocoapods_version(選填)

規(guī)范支持的CocoaPods版本甥捺。

spec.cocoapods_version = '>= 0.36'

2.5 authors(必填)

作者。

spec.author = 'Darth Vader'
spec.authors = 'Darth Vader', 'Wookiee'
spec.authors = { 'Darth Vader' => 'darthvader@darkside.com',
                 'Wookiee'     => 'wookiee@aggrrttaaggrrt.com' }

2.6 social_media_url(必填)

Pod的社交媒體聯(lián)系人的URL镀层, CocoaPods網(wǎng)絡(luò)服務(wù)可以使用這個(gè)镰禾。

spec.social_media_url = 'https://twitter.com/cocoapods'
spec.social_media_url = 'https://groups.google.com/forum/#!forum/cocoapods'

2.7 license (必填)

Pod許可證。

spec.license = 'MIT'
spec.license = { :type => 'MIT', :file => 'MIT-LICENSE.txt' }
spec.license = { :type => 'MIT', :text => <<-LICENSE
                   Copyright 2012
                   Permission is granted to...
                 LICENSE
               }

2.8 homepage (必填)

Pod主頁的URL唱逢。

spec.homepage = 'http://www.example.com'

2.9 readme(選填)

此pod版本的README markdown文件的URL吴侦。

spec.readme = 'https://www.example.com/Pod-1.5-README.md'

2.10 changelog(選填)

此pod版本的CHANGELOG markdown文件的URL。

spec.changelog = 'https://www.example.com/Pod-1.5-CHANGELOG.md'

2.11 source(選填)

應(yīng)該從何處檢索庫的位置坞古。

  • 使用tag指定一個(gè)Git源文件妈倔,比較常用:
spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git',
                :tag => spec.version.to_s }
  • 使用以'v'和子模塊為前綴的標(biāo)簽
spec.source = { :git => 'https://github.com/typhoon-framework/Typhoon.git',
                :tag => "v#{spec.version}", :submodules => true }

還有一些不常用的,比如支持下載zip文件绸贡,可以從官網(wǎng)上看到盯蝴。

支持的keys:

:git => :tag, :branch, :commit, :submodules

:svn => :folder, :tag, :revision

:hg => :revision

:http => :flatten, :type, :sha256, :sha1, :headers

2.12 summary(選填)

對(duì)Pod的簡短描述(最多140個(gè)字符)。

spec.summary = 'Computes the meaning of life.'

2.13 description(選填)

對(duì)Pod的描述比summary更詳細(xì)听怕。

spec.description = <<-DESC
                     Computes the meaning of life.
                     Features:
                     1. Is self aware
                     ...
                     42. Likes candies.
                   DESC

2.14 screenshots(選填)

展示Pod截圖的url列表捧挺。CocoaPods推薦使用gif格式。

spec.screenshot  = 'http://dl.dropbox.com/u/378729/MBProgressHUD/1.png'
spec.screenshots = [ 'http://dl.dropbox.com/u/378729/MBProgressHUD/1.png',
                     'http://dl.dropbox.com/u/378729/MBProgressHUD/2.png' ]

2.15 documentation_url(選填)

一個(gè)可選的Pod文檔URL尿瞭,默認(rèn)為CocoaDocs生成的庫URL闽烙。

spec.documentation_url = 'http://www.example.com/docs.html'

2.16 prepare_command(選填)

下載Pod后執(zhí)行的bash腳本。該命令可用于創(chuàng)建、刪除和修改下載的任何文件黑竞,并且將在該規(guī)范的其他文件屬性的任何路徑被收集之前運(yùn)行該命令捕发。

此命令在清理Pod和創(chuàng)建Pod project項(xiàng)目之前執(zhí)行。工作目錄為Pod的根目錄很魂。

如果pod導(dǎo)入時(shí)使用了:path選項(xiàng)扎酷,則不會(huì)執(zhí)行此命令。

spec.prepare_command = 'ruby build_files.rb'
spec.prepare_command = <<-CMD
                        sed -i 's/MyNameSpacedHeader/Header/g' ./**/*.h
                        sed -i 's/MyNameOtherSpacedHeader/OtherHeader/g' ./**/*.h
                   CMD

2.17 static_framework(選填)

如果use_frameworks!指定時(shí)遏匆,pod應(yīng)該包含一個(gè)靜態(tài)庫framework法挨。

spec.static_framework = true

2.18 deprecated(選填)

標(biāo)記庫是否已經(jīng)廢棄不用。

spec.deprecated = true

2.19 deprecated_in_favor_of(選填)

這個(gè)Pod庫的名字已經(jīng)被棄用了幅聘。

spec.deprecated_in_favor_of = 'NewMoreAwesomePod'

3. Platform

規(guī)范應(yīng)該指明支持庫的平臺(tái)和相應(yīng)的部署目標(biāo)凡纳。

3.1 platform

支持當(dāng)前Pod庫的平臺(tái)。不填則表示所有平臺(tái)都支持該P(yáng)od庫帝蒿。當(dāng)支持多個(gè)平臺(tái)時(shí)荐糜,你應(yīng)該使用下面的deployment_target

spec.platform = :osx, '10.8'
spec.platform = :ios
spec.platform = :osx

3.2 deployment_target

支持platform的最小部署目標(biāo)葛超。

platform屬性相反暴氏,deployment_target屬性允許指定支持此pod的多個(gè)平臺(tái),就是為每個(gè)platform指定不同的部署目標(biāo)巩掺。

spec.ios.deployment_target = '6.0'
spec.osx.deployment_target = '10.8'

4. Build settings

在該組中列出了與應(yīng)用構(gòu)建環(huán)境配置相關(guān)的屬性偏序。

4.1 dependency

標(biāo)明對(duì)其他pod庫或者子庫的依賴页畦。

如果這里指定版本過于嚴(yán)格胖替,會(huì)限制它們與其他pod的兼容性。

spec.dependency 'AFNetworking', '~> 1.0'
spec.dependency 'AFNetworking', '~> 1.0', :configurations => ['Debug']
spec.dependency 'AFNetworking', '~> 1.0', :configurations => :debug
spec.dependency 'RestKit/CoreData', '~> 0.20.0'
spec.ios.dependency 'MBProgressHUD', '~> 0.5'

4.2 info_plist (multi-platform)

要添加到生成的Info.plist中的鍵值對(duì)豫缨。

對(duì)于library specs独令,這些值將合并到生成的framework的Info.plist中,它對(duì)靜態(tài)庫沒有影響好芭,不支持subspecs燃箭。對(duì)于app specs,這些值將合并到主應(yīng)用的Info.plist中舍败。

spec.info_plist = {
  'CFBundleIdentifier' => 'com.myorg.MyLib',
  'MY_VAR' => 'SOME_VALUE'
}

4.3 requires_arc (默認(rèn)為true)

requires_arc允許指定哪些source_files使用ARC招狸。可以設(shè)置為true表示所有source_files使用ARC邻薯。不使用ARC的文件會(huì)有-fno-objc-arc編譯標(biāo)志裙戏。

spec.requires_arc = true
spec.requires_arc = 'Classes/Arc'
spec.requires_arc = ['Classes/*ARC.m', 'Classes/ARC.mm']

4.4 frameworks (multi-platform)

用戶的target需要鏈接的系統(tǒng)framework列表。

spec.ios.framework = 'CFNetwork'
spec.frameworks = 'QuartzCore', 'CoreData'

4.5 weak_frameworks (multi-platform)

用戶的目標(biāo)需要弱鏈接的框架列表厕诡。

spec.weak_framework = 'Twitter'
spec.weak_frameworks = 'Twitter', 'SafariServices'

4.6 libraries (multi-platform)

用戶的目標(biāo)(應(yīng)用程序)需要鏈接的系統(tǒng)庫的列表累榜。

spec.ios.library = 'xml2'
spec.libraries = 'xml2', 'z'

4.7 compiler_flags (multi-platform)

應(yīng)該傳遞給編譯器的標(biāo)志列表。

spec.compiler_flags = '-DOS_OBJECT_USE_OBJC=0', '-Wno-format'

4.8 pod_target_xcconfig (multi-platform)

要添加到最終私有pod target 的 xcconfig文件中的任何標(biāo)志灵嫌。

spec.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lObjC' }

4.9 user_target_xcconfig (multi-platform)

指定要添加到最終聚合target(項(xiàng)目工程target)的xcconfig文件的標(biāo)志壹罚。

不建議使用此屬性葛作,因?yàn)镻ods不應(yīng)該污染用戶項(xiàng)目的構(gòu)建設(shè)置,這可能會(huì)導(dǎo)致沖突猖凛。建議使用pod_target_xcconfig赂蠢。

spec.user_target_xcconfig = { 'MY_SUBSPEC' => 'YES' }

4.10 prefix_header_contents (multi-platform)

要注入到pod項(xiàng)目前綴頭中的任何內(nèi)容。

不建議使用此屬性形病,因?yàn)镻ods不應(yīng)該污染其他庫或用戶項(xiàng)目的前綴頭客年。

spec.prefix_header_contents = '#import <UIKit/UIKit.h>'
spec.prefix_header_contents = '#import <UIKit/UIKit.h>', '#import <Foundation/Foundation.h>'

4.11 prefix_header_file (multi-platform)

要注入到pod項(xiàng)目的前綴頭文件中的前綴頭文件的路徑。

不建議使用文件路徑選項(xiàng)漠吻,因?yàn)镻ods不應(yīng)該污染其他庫或用戶項(xiàng)目的前綴頭量瓜。

spec.prefix_header_file = 'iphone/include/prefix.pch'
spec.prefix_header_file = false

4.12 module_name

該規(guī)范生成的用于framework / clang module 的名稱,而不是默認(rèn)名稱(如果設(shè)置header_dir途乃,否則為規(guī)范名稱)绍傲。

spec.module_name = 'Three20'

4.13 header_dir (multi-platform)

存放頭文件的目錄,這樣它們就不會(huì)破壞include耍共。

spec.header_dir = 'Three20Core'

4.14 header_dir (multi-platform)

保存頭文件的文件夾結(jié)構(gòu)的目錄烫饼。如果沒有提供,頭文件將被flattened试读。

spec.header_dir = 'Three20Core'

4.15 script_phases (multi-platform)

此屬性允許定義腳本階段杠纵,以作為Pod編譯的一部分執(zhí)行。與prepare command不同钩骇,腳本階段作為xcodebuild的一部分執(zhí)行比藻,它們還可以使用編譯期間設(shè)置的所有環(huán)境變量

Pod可以提供多個(gè)腳本階段來執(zhí)行倘屹,它們將按照聲明的順序添加银亲。

注意:為了提供所有腳本階段的內(nèi)容的可見性,如果pod包含任何腳本纽匙,安裝時(shí)將向用戶顯示一個(gè)警告务蝠。

spec.script_phase = { :name => 'Hello World', :script => 'echo "Hello World"' }
spec.script_phase = { :name => 'Hello World', :script => 'echo "Hello World"', :execution_position => :before_compile }
spec.script_phase = { :name => 'Hello World', :script => 'puts "Hello World"', :shell_path => '/usr/bin/ruby' }
spec.script_phase = { :name => 'Hello World', :script => 'echo "Hello World"',
  :input_files => ['/path/to/input_file.txt'], :output_files => ['/path/to/output_file.txt']
}
spec.script_phase = { :name => 'Hello World', :script => 'echo "Hello World"',
  :input_file_lists => ['/path/to/input_files.xcfilelist'], :output_file_lists => ['/path/to/output_files.xcfilelist']
}
spec.script_phases = [
    { :name => 'Hello World', :script => 'echo "Hello World"' },
    { :name => 'Hello Ruby World', :script => 'puts "Hello World"', :shell_path => '/usr/bin/ruby' },
  ]

5. File patterns(文件模式)

5.1 File patterns

Podspecs應(yīng)該位于庫文件夾的根目錄,并且文件的路徑也應(yīng)該相對(duì)于存儲(chǔ)庫的目錄指定烛缔。文件模式不支持遍歷父目錄(…). 文件模式可能包含以下通配符模式:

5.1.1 Pattern: *

匹配任何文件馏段,可以被glob中的其他值限制:

* 匹配所有文件
c* 匹配以c開頭的文件
*c 匹配以c結(jié)尾的文件
*c*匹配包含c的文件

5.1.2 Pattern: **

目錄遞歸地匹配。

5.1.3 Pattern: ?

匹配任意一個(gè)字符践瓷。相當(dāng)于 正則表達(dá)式中的/.{1}/院喜。

5.1.4 Pattern: [set]

匹配集合中的任意一個(gè)字符。
行為與正則表達(dá)式中的字符集完全一樣当窗,包括反集([^a-z])够坐。

5.1.4 Pattern: {p,q}

匹配字面值p或字面值q。等價(jià)于正則表達(dá)式中的模式變換。

5.1.5 Pattern: \

轉(zhuǎn)義下一個(gè)元字符元咙。

示例:

"JSONKit.?"    #=> ["JSONKit.h", "JSONKit.m"]
"*.[a-z][a-z]" #=> ["CHANGELOG.md", "README.md"]
"*.[^m]*"      #=> ["JSONKit.h"]
"*.{h,m}"      #=> ["JSONKit.h", "JSONKit.m"]
"*"            #=> ["CHANGELOG.md", "JSONKit.h", "JSONKit.m", "README.md"]

5.2 source_files (multi-platform)

pod庫中包含的源文件梯影。

spec.source_files = 'Classes/**/*.{h,m}'
spec.source_files = 'Classes/**/*.{h,m}', 'More_Classes/**/*.{h,m}'

5.3 public_header_files (multi-platform)

作為公共頭的文件模式列表。

這些文件模式將與源文件進(jìn)行匹配庶香,以包含將向主項(xiàng)目公開的頭文件甲棍,并從中生成文檔。當(dāng)構(gòu)建庫時(shí)赶掖,這些頭文件將出現(xiàn)在構(gòu)建目錄中感猛。如果沒有指定公共頭文件,那么source_files中的所有頭文件都被認(rèn)為是公共的奢赂。

spec.public_header_files = 'Headers/Public/*.h'

5.4 project_header_files (multi-platform)

作為項(xiàng)目頭的文件模式列表陪白。

這些文件模式將與public headers進(jìn)行匹配,以排除那些不應(yīng)公開給用戶項(xiàng)目和不應(yīng)用于生成文檔的headers膳灶。當(dāng)構(gòu)建庫時(shí)咱士,這些頭文件將不會(huì)出現(xiàn)在構(gòu)建目錄中。

spec.project_header_files = 'Headers/Project/*.h'

5.5 private_header_files (multi-platform)

作為私有頭的文件模式列表轧钓。

這些模式將與public headers進(jìn)行匹配序厉,以排除那些不應(yīng)公開給用戶項(xiàng)目和不應(yīng)用于生成文檔的標(biāo)頭。當(dāng)構(gòu)建庫時(shí)毕箍,這些頭文件將出現(xiàn)在構(gòu)建目錄中弛房。

未被列為公共、項(xiàng)目或私有文件的頭文件會(huì)出現(xiàn)在構(gòu)建目錄中而柑。

spec.private_header_files = 'Headers/Private/*.h'

5.6 vendored_frameworks (multi-platform)

Pod所依賴的的framework的路徑文捶,同時(shí)支持.framework和.xcframework包。這些框架將提供給Pod和Pod的消費(fèi)者牺堰。

spec.ios.vendored_frameworks = 'Frameworks/MyFramework.framework'
spec.vendored_frameworks = 'MyFramework.framework', 'TheirFramework.xcframework'

5.7 vendored_libraries (multi-platform)

Pod所依賴的庫(.a文件)的路徑拄轻。

spec.ios.vendored_library = 'Libraries/libProj4.a'
spec.vendored_libraries = 'libProj4.a', 'libJavaScriptCore.a'

5.8 on_demand_resources (multi-platform)

應(yīng)復(fù)制到目標(biāo)target中的隨需應(yīng)變資源的哈希值颅围。這里指定的資源將自動(dòng)成為集成此pod的target的資源構(gòu)建階段的一部分伟葫。

由pods指定的tag是由CocoaPods管理的。如果一個(gè)標(biāo)簽被重命名院促、更改或刪除筏养,那么CocoaPods也會(huì)在工程target中進(jìn)行更新。

s.on_demand_resources = {
  'Tag1' => 'file1.png'
}
s.on_demand_resources = {
  'Tag1' => ['file1.png', 'file2.png']
}
s.on_demand_resources = {
  'Tag1' => { :paths => ['file1.png', 'file2.png'], :category => :download_on_demand }
}
s.on_demand_resources = {
  'Tag1' => { :paths => ['file1.png', 'file2.png'], :category => :initial_install }
}

5.9 resource_bundles (multi-platform)

這個(gè)屬性允許為pod構(gòu)建使用的資源包定義name常拓。就是一個(gè)鍵值對(duì)渐溶,其中key表示包的名稱,value表示它們應(yīng)該包含的文件模式的值弄抬。

為了將Pod構(gòu)建為一個(gè)靜態(tài)庫茎辐,推薦采用resource_bundles,因?yàn)槭褂?code>resources屬性可能會(huì)產(chǎn)生名稱沖突。

包的名稱至少應(yīng)該包含Pod的名稱拖陆,以盡量減少名稱沖突的機(jī)會(huì)弛槐。

spec.ios.resource_bundle = { 'MapBox' => 'MapView/Map/Resources/*.png' }
spec.resource_bundles = {
    'MapBox' => ['MapView/Map/Resources/*.png'],
    'MapBoxOtherResources' => ['MapView/Map/OtherResources/*.png']
  }

5.10 resources (multi-platform)

應(yīng)該復(fù)制到目標(biāo)target bundle中的資源列表。

為了將Pod構(gòu)建為一個(gè)靜態(tài)庫依啰,強(qiáng)烈建議采用resource_bundles乎串,因?yàn)槭褂?code>resources屬性可能會(huì)產(chǎn)生名稱沖突。此外速警,用這個(gè)屬性指定的資源會(huì)直接復(fù)制到客戶端目標(biāo)中叹誉,因此它們不會(huì)被Xcode優(yōu)化。

spec.resource = 'Resources/HockeySDK.bundle'
spec.resources = ['Images/*.png', 'Sounds/*']

5.11 exclude_files (multi-platform)

應(yīng)該從其他文件模式中排除的文件模式列表闷旧。

spec.ios.exclude_files = 'Classes/osx'
spec.exclude_files = 'Classes/**/unused.{h,m}'

5.12 preserve_paths (multi-platform)

下載后不應(yīng)刪除的任何文件长豁。

默認(rèn)情況下,CocoaPods刪除所有與任何其他文件模式不匹配的文件忙灼。

spec.preserve_path = 'IMPORTANT.txt'
spec.preserve_paths = 'Frameworks/*.framework'

5.13 module_map (multi-platform)

當(dāng)此pod集成為framework時(shí)應(yīng)該使用的模塊映射文件蕉斜。

false表示不應(yīng)該生成默認(rèn)的CocoaPods modulemap文件。
true為默認(rèn)值缀棍,表示應(yīng)該生成默認(rèn)的CocoaPods modulemap文件宅此。

默認(rèn)情況下,CocoaPods根據(jù)規(guī)范中的公共頭文件創(chuàng)建模塊映射文件爬范。

spec.module_map = 'source/module.modulemap'
spec.module_map = false
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末父腕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子青瀑,更是在濱河造成了極大的恐慌璧亮,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斥难,死亡現(xiàn)場離奇詭異枝嘶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哑诊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門群扶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人镀裤,你說我怎么就攤上這事竞阐。” “怎么了暑劝?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵骆莹,是天一觀的道長。 經(jīng)常有香客問我担猛,道長幕垦,這世上最難降的妖魔是什么丢氢? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮先改,結(jié)果婚禮上卖丸,老公的妹妹穿的比我還像新娘。我一直安慰自己盏道,他們只是感情好稍浆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猜嘱,像睡著了一般衅枫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朗伶,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天弦撩,我揣著相機(jī)與錄音,去河邊找鬼论皆。 笑死益楼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的点晴。 我是一名探鬼主播感凤,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粒督!你這毒婦竟也來了陪竿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤屠橄,失蹤者是張志新(化名)和其女友劉穎族跛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锐墙,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁哄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溪北。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐绒。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刻盐,靈堂內(nèi)的尸體忽然破棺而出掏膏,到底是詐尸還是另有隱情劳翰,我是刑警寧澤敦锌,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站佳簸,受9級(jí)特大地震影響乙墙,放射性物質(zhì)發(fā)生泄漏颖变。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一听想、第九天 我趴在偏房一處隱蔽的房頂上張望腥刹。 院中可真熱鬧,春花似錦汉买、人聲如沸衔峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫卤。三九已至,卻和暖如春出牧,著一層夾襖步出監(jiān)牢的瞬間穴肘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工舔痕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留评抚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓伯复,卻偏偏與公主長得像慨代,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啸如,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言 ? 長時(shí)間不寫Podspec文件鱼响,容易忘記里面的一些屬性含義,所以本文把 官方Podspec語法v1.9...
    eeybee閱讀 7,691評(píng)論 0 23
  • 概述 距離上一篇podfile介紹過去已經(jīng)幾個(gè)月了组底,很想抽時(shí)間將這個(gè)系列的文章抓緊補(bǔ)齊丈积,但是時(shí)間一拖再拖,我也不想...
    二毛的希望閱讀 7,657評(píng)論 2 19
  • CocoaPods官網(wǎng)spec文件描述了Pod庫的版本债鸡。它包括有關(guān)從哪里獲取source江滨、要使用哪些文件、應(yīng)用程序...
    oneday527閱讀 11,325評(píng)論 3 36
  • 瞎扯?? 小菜雞一直打算上傳下自己寫的一些小demo,上傳過程中遇到了一些小問題再加上自己懶這個(gè)打算就擱淺了 ̄□ ̄|...
    喝酸奶舔下蓋閱讀 13,515評(píng)論 0 14
  • 手動(dòng)組件化基本步驟 一棺弊、遠(yuǎn)程索引庫 什么是遠(yuǎn)程索引庫 每創(chuàng)建一個(gè)組件都會(huì)帶有一個(gè) xxx.podspec 的索引文...
    JacobLi閱讀 323評(píng)論 0 0