CocoaPods(封裝庫管理控件)

寫在前面:如果你是首次使用CocoaPods瞻离,目標(biāo)是快準(zhǔn)狠的安裝和使用秉溉,可以直接看安裝腾它、具體使用跑筝、使用補(bǔ)充三部分快速上手嘗鮮。有一定經(jīng)驗(yàn)后回來具體看看每部指令的含義瞒滴,你會(huì)對(duì)CocoaPods了解越來越深~

一曲梗、CocoaPods簡(jiǎn)介:

CocoaPods是負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫的工具,CocoaPods能讓我們集中妓忍、統(tǒng)一管理第三方開源庫虏两,為我們節(jié)省設(shè)置和更新第三方開源庫的時(shí)間。

二世剖、CocoaPods安裝:

在正式開始介紹安裝CocoaPods定罢,溫馨提示如下:

  1. 操作命令中間可能有空格看不出來,建議直接復(fù)制粘貼執(zhí)行旁瘫;

  2. CocoaPods是由ruby語言編寫的祖凫。我們需要通過Ruby來安裝CocoaPods(至于為什么,我百度過也不知道原因酬凳,知道的朋友可以留言~)惠况。然后因?yàn)镸ac電腦自帶Ruby環(huán)境,我們就只需打開終端開始動(dòng)手宁仔。但是默認(rèn)情況下mac系統(tǒng)自帶的Ruby環(huán)境版本比較低(大概是2.0.0版本的)售滤,現(xiàn)在安裝CocoaPods需要2.2.2版本及以上的,所以我們不管三七二十一先直接先升級(jí)ruby台诗。

  3. 安裝CocoaPods整體思路是:更新ruby->設(shè)置CocoaPods下載地址->下載并安裝CocoaPods->使用CocoaPods

正式安裝:

1完箩、打開終端(不會(huì)的請(qǐng)自行百度)

2、查看當(dāng)前Ruby版本(一般都是2.0.0拉队,如果已經(jīng)是最新版本的弊知,可以跳過2-7兩步)

ruby -v

3、升級(jí)Ruby環(huán)境粱快,需要借助rvm(rvm是一個(gè)便捷的多版本ruby環(huán)境的管理和切換工具)秩彤。安裝rvm(第一步要下載一些東西等兩分鐘左右);有rvm可以跳過3事哭、4步漫雷,不確定可執(zhí)行第4步檢查

curl -L get.rvm.io | bash -s stable 

source ~/.bashrc

source ~/.bash_profile

4、查看rvm版本(有版本號(hào)就表示安裝成功)

rvm -v 

5鳍咱、檢出ruby可安裝的版本信息

rvm list known

6降盹、安裝一個(gè)ruby版本(可以是2.4.1版本,當(dāng)然你也可以選擇其他的)

rvm install 2.4.1

7谤辜、設(shè)置為默認(rèn)版本

rvm use 2.4.1 --default

8蓄坏、更換源(由于國(guó)內(nèi)訪問的CocoaPods國(guó)外下載路徑被墻价捧,我們需要來修改更換源,把源切換至ruby-china涡戳;網(wǎng)上大多數(shù)是使用的https://ruby.taobao.org的结蟋,這里不再建議使用的了,這是因?yàn)閠aobao Gems 源已停止維護(hù)渔彰,現(xiàn)由 ruby-china 提供鏡像服務(wù))

sudo gem update --system // 更新gem

gem sources --remove https://rubygems.org/ // 移除舊有鏡像資源地址

gem sources -a https://gems.ruby-china.org/ // 添加新的鏡像資源地址

9嵌屎、為了驗(yàn)證你的Ruby鏡像是并且僅是ruby-china,執(zhí)行以下命令查看

gem sources -l

如果是以下結(jié)果說明正確恍涂,如果有其他的請(qǐng)自行百度解決

*** CURRENT SOURCES ***

https://gems.ruby-china.org/

10编整、終于正式安裝CocoaPods

sudo gem install cocoapods
sudo gem install -n /usr/local/bin cocoapods // macOS 10.11系統(tǒng)后使用。現(xiàn)在基本上用這個(gè)命令

11乳丰、如果安裝了多個(gè)Xcode使用下面的命令選擇(一般需要選擇最近的Xcode版本)

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

12、初始化本地庫(作用:將CocoaPods記錄的所有第三方庫下載信息下載到本地~/.cocoapods/repos/master下面)

pod setup

13内贮、執(zhí)行以上命令后會(huì)輸出一句話:Setting up CocoaPods master repo产园,然后就是漫長(zhǎng)的等待,并不是卡死了而是在下載文件(下載完成后大概800多兆)夜郁。網(wǎng)速稍好些什燕,幾分鐘就好了,人品不好網(wǎng)絡(luò)差的可能會(huì)等很久很久很久........

查看文件下載進(jìn)度的可以另外打開一個(gè)終端窗口(快捷鍵:選中終端按下Command+N組合鍵)竞端,復(fù)制粘貼以下兩行命令回車執(zhí)行

cd ~/.cocoapods
du -sh *

執(zhí)行du -sh *之后會(huì)顯示已下載的文件大小屎即,可以多次執(zhí)行來監(jiān)看下載進(jìn)度,如果之前還有文件大小事富,后來變成0了技俐,可能是網(wǎng)絡(luò)問題,下載已經(jīng)中斷了,需要結(jié)束命令并從新執(zhí)行 pod setup

網(wǎng)上有文章說可以將別人機(jī)器上~/.cocoapods/repos/master下面的文件copy到自己電腦上的文件里可以跳過這步统台,本人親測(cè)過雕擂,或多或少都有點(diǎn)問題。如果復(fù)制后贱勃,執(zhí)行pod setup依然會(huì)清空原來內(nèi)容重新下載井赌,而不是智能的根據(jù)已下載的內(nèi)容走剩下的流程,白復(fù)制贵扰,所以還是乖乖下載吧仇穗。

14、下載安裝完成之后可執(zhí)行下列命令檢查是否可用(第一次使用要等一會(huì)戚绕,因?yàn)檫@個(gè)時(shí)候CocoaPods需要生成本地的封裝庫搜索文件目錄)纹坐;

pod search AFNetworking

如果是以下結(jié)果說明正確,如果有其他的請(qǐng)自行百度解決;AFNetworking+AutoRetry (0.0.5)不是我們要找的,AFNetworking (3.1.0)才是舞丛。退出搜索結(jié)果界面輸入wq

-> AFNetworking (3.1.0)
   A delightful iOS and OS X networking framework.
   pod 'AFNetworking', '~> 3.1.0'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3,
   3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,
   2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0,
   2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4,
   1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2,
   1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
   - Subspecs:
     - AFNetworking/Serialization (3.1.0)
     - AFNetworking/Security (3.1.0)
     - AFNetworking/Reachability (3.1.0)
     - AFNetworking/NSURLSession (3.1.0)
     - AFNetworking/UIKit (3.1.0)

-> AFNetworking+AutoRetry (0.0.5)
   Auto Retries for AFNetworking requests
   pod 'AFNetworking+AutoRetry', '~> 0.0.5'
   - Homepage: https://github.com/shaioz/AFNetworking-AutoRetry

三恰画、CocoaPods的使用

1宾茂、 新建一個(gè)Xcode工程,使用終端cd到工程目錄下(項(xiàng)目的.xcodeproj同級(jí)文件夾)

2拴还、創(chuàng)建Podfile文件:

pod init

之后就可以在項(xiàng)目目錄里看到一個(gè)Podfile文件

3跨晴、命令行打開Podfile文件或直接雙擊打開Podfile文件:

open Podfile

4、添加需要的第三方庫(以AFNetworking為例)片林,在打開的Podfile最下面添加以下內(nèi)容:

pod 'AFNetworking' // 這里示范端盆,所以不指定版本號(hào),就是下載最新的第三方庫费封。

// pod 'AFNetworking', '~> 3.1.0' // 實(shí)際工作中焕妙,必須要指定版本。

5弓摘、保存(command + S)后退出

6焚鹊、開始下載:

pod install --no-repo-update

終端的結(jié)果沒有紅色的內(nèi)容,基本上安裝成功了韧献。

7末患、打開.xcworkspace。一開始如果不習(xí)慣CocoaPods锤窑,往往會(huì)繼續(xù)打開.xcodeproj運(yùn)行工程璧针,然后成功報(bào)錯(cuò)的哦。使用CocoaPods 需要打開.xcworkspace才能成功運(yùn)行工程~

8渊啰、卸載CocoaPods探橱。雖然很少用到,但貼心附上卸載CocoaPods的命令:

sudo gem uninstall cocoapods

四绘证、CocoaPods具體使用補(bǔ)充

1隧膏、 podfile文件內(nèi)容簡(jiǎn)單介紹:

// 用來設(shè)置所有第三方庫所支持的iOS最低版本
platform :ios, '7.0'

target 'test' do // test是項(xiàng)目名

// 如果是swift項(xiàng)目,這句話保留嚷那;如果是OC項(xiàng)目私植,這句話要?jiǎng)h除
use_frameworks!

// 添加第三方類庫
pod 'AFNetworking'

// 添加指定版本號(hào)的第三方類庫
pod 'SVProgressHUD', '1.1.3'

2、 版本說明

// 設(shè)置框架的名稱和版本號(hào)
pod 'SDWebImage','~>3.7.5'//任何高于或等于3.7.5的版本车酣,但是不包含高于4.0.0版本

//  版本號(hào)的規(guī)則:
//  '>1.0'    可以安裝任何高于1.0的版本
//  '>=1.0'   可以安裝任何高于或等于1.0的版本
//  '<1.0'    任何低于1.0的版本
//  '<=1.0'   任何低于或等于1.0的版本
//  '~>0.1'   任何高于或等于0.1的版本曲稼,但是不包含高于1.0的版本
//  '~>0'     任何版本,相當(dāng)于不指定版本湖员,默認(rèn)采用最新版本號(hào)

溫馨提示:

  1. 工作中建議使用'~>0 .1' 方式指定版本號(hào)贫悄,不建議不指定版本號(hào)。因?yàn)榘姹咎?hào)的命名規(guī)則娘摔,每個(gè)0.01版本增加窄坦,一般是bug修復(fù)等小改動(dòng);每個(gè)0.1版本增加是引入或更新新的第三方庫,或增加新的小功能等鸭津;每個(gè)1.0版本增加往往是大的新功能增加或者變量彤侍、方法命名等有大改變,往往對(duì)我們引用造成很大影響逆趋,因?yàn)榭赡芤{(diào)整項(xiàng)目中的代碼盏阶。如果不指示版本號(hào),就會(huì)容易出現(xiàn)下載超過大于1.0版本的第三方庫闻书,出現(xiàn)不可知問題哦名斟。
  1. 指定版本號(hào)也方便知道目前引用的第三方庫大概是什么版本號(hào),當(dāng)然具體的可以到podfile.lock中查看魄眉。這遠(yuǎn)比手工拖入第三方庫好的多砰盐。畢竟如果你手工拖入第三方庫,并且沒有做任何標(biāo)示坑律,天知道你下載的是哪個(gè)版本的岩梳,后續(xù)維護(hù)就是一個(gè)巨坑。本人就試過想將手工拖入的第三方庫轉(zhuǎn)移到CocoaPods中晃择,由于不知道原版本號(hào)冀值,只能指定最新的版本號(hào),一運(yùn)行成功藕各,各種飄紅~

3、 podfile和podfile.lock的區(qū)別

Podfile文件:
1. 記錄本項(xiàng)目中的第三方庫版本要求焦除。
2. 必須做版本管理,項(xiàng)目成員間保持一致激况。

Podfile.lock文件:
1. 記錄最后一次更新Pods時(shí), 所有第三方框架的最終版本號(hào)。
2. 推薦做版本管理膘魄。除了項(xiàng)目很復(fù)雜乌逐,需要針對(duì)不同內(nèi)容使用不同第三方庫依賴時(shí)不做版本管理

4、 常用指令介紹

// 根據(jù)Podfile.lock文件中列舉的版本號(hào)來安裝第三方框架
// 如果一開始Podfile.lock文件不存在, 就會(huì)按照Podfile文件列舉的版本號(hào)來安裝第三方框架
// pod install

// 將所有第三方框架更新到最新版本, 并且創(chuàng)建一個(gè)新的Podfile.lock文件
// pod update // 更新Podfile中所有的第三方庫
// pod update PODNAME // 只更新某個(gè)特定的庫

// 上述兩個(gè)指令在執(zhí)行前默認(rèn)會(huì)執(zhí)行pod repo update指令
// 長(zhǎng)時(shí)間不更新鏡像创葡,會(huì)出現(xiàn)pod search的結(jié)果低于實(shí)際上該第三方庫在github上的版本浙踢。這個(gè)時(shí)候就執(zhí)行該命令更新鏡像,否則就無法下載最新的第三方庫
pod repo update  

// 由于不需要經(jīng)常更新第三方庫灿渴,也沒必要一定要下載最新的第三方庫(有可能還不穩(wěn)定)洛波,另外更新鏡像很費(fèi)時(shí)間,實(shí)際中往往不每次都更新鏡像骚露,需要帶上后綴--no-repo-update蹬挤,以免執(zhí)行pod repo update指令
pod install --no-repo-update // 推薦使用
// pod update --no-repo-update // 不推薦使用
pod update PODNAME --no-repo-update // 推薦使用, PODNAME應(yīng)改為具體的第三方庫庫名
        
// 檢出那些所有較Podfile.lock里面有新版本的庫(那些當(dāng)前被安裝著的庫的版本)
pod outdated 

5、 pod install & pod update區(qū)別

  • 舉個(gè)例子好說明:
// 1. 初次建立項(xiàng)目棘幸,Podfile中第三方庫要求如下:
pod 'SDWebImage','~>3.7.5'
pod 'AFNetworking', '~> 3.1.0'

// 2. 使用pod install --no-repo-update后焰扳,會(huì)安裝SDWebImage和AFNetworking,在Podfile.lock中版本號(hào)分別是3.7.5和3.1.0
pod install --no-repo-update

// 3. 后來AFNetworking的作者發(fā)布3.2.0最新包,SDWebImage沒變化吨悍;沒有對(duì)Podfile中第三方庫要求做任何修改

// 4.1 若此時(shí)執(zhí)行pod install --no-repo-update 
pod install --no-repo-update 
// 由于已經(jīng)有Podfile.lock扫茅,當(dāng)前已安裝的第三方庫(Podfile.lock記錄的)依然符合Podfile中要求,不會(huì)做任何處理育瓜;即當(dāng)前SDWebImage和AFNetworking葫隙,依然是3.7.5和3.1.0

// 4.2 若此時(shí)執(zhí)行pod update --no-repo-update 
pod update --no-repo-update 
// 不管有沒有Podfile.lock,CocoaPods會(huì)找遠(yuǎn)方服務(wù)器最新的爆雹,并且符合Podfile中要求的第三方庫更新停蕉,并重新生成Podfile.lock;即當(dāng)前SDWebImage和AFNetworking钙态,依然是3.7.5和3.2.0

// 5.要注意的是慧起,假如項(xiàng)目中SDWebImage和AFNetworking,依然是3.7.5和3.1.0册倒。遠(yuǎn)方服務(wù)器SDWebImage和AFNetworking最新的版本是3.8.5和3.2.0
// 需要引入新的第三方庫MJExtension
pod 'MJExtension', '~> 3.0.13'

// 5.1 若只是引入MJExtension而不更新已有的庫蚓挤,執(zhí)行
pod install --no-repo-update 
// 此時(shí)SDWebImage和AFNetworking,依然是3.7.5和3.1.0驻子;并增加MJExtension(3.0.13)

// 5.2若不僅要引入MJExtension并更新已有的庫灿意,執(zhí)行
pod update --no-repo-update
// // 此時(shí)SDWebImage和AFNetworking,升級(jí)到3.8.5和3.2.0崇呵;并增加MJExtension(3.0.13)
  1. 使用pod install/update命令安裝框架后的大致過程:

     01 分析依賴:該步驟會(huì)分析Podfile,查看不同類庫之間的依賴情況缤剧。如果有多個(gè)類庫依賴于同一個(gè)類庫,但是依賴于不同的版本域慷,那么cocoaPods會(huì)自動(dòng)設(shè)置一個(gè)兼容的版本荒辕。
     02-1 下載依賴(pod install):根據(jù)分析依賴的結(jié)果,根據(jù)Podfile.lock是否已有符合的第三方庫犹褒,若有則不下載抵窒,若無則下載指定版本的類庫到本地項(xiàng)目中,并更新Podfile.lock叠骑。
     02-2 下載依賴(pod update):根據(jù)分析依賴的結(jié)果李皇,無視已有的版本庫,下載最新的指定版本的類庫到本地項(xiàng)目中宙枷,并更新Podfile.lock掉房。
     03 生成Pods項(xiàng)目:創(chuàng)建一個(gè)Pods項(xiàng)目專門用來編譯和管理第三方框架,CocoaPods會(huì)將所需的框架慰丛,庫等內(nèi)容添加到項(xiàng)目中圃阳,并且進(jìn)行相應(yīng)的配置。
     04 整合Pods項(xiàng)目:將Pods和項(xiàng)目整合到一個(gè)工作空間中璧帝,并且設(shè)置文件鏈接捍岳。
    

7、 CocoaPods specs的鏡像索引

  • CocoaPods specs的鏡像索引是指CocoaPods管理的全球所有第三方庫相關(guān)信息在本地的查詢數(shù)據(jù)。CocoaPods需要依靠本地的鏡像索引來獲取服務(wù)端中對(duì)應(yīng)的第三方庫信息(下載地址等)并進(jìn)行分析下載锣夹。

  • 所有的項(xiàng)目的podspec文件(鏡像索引文件)都托管在https://github.com/CocoaPods/Specs上页徐。

  • 第一次執(zhí)行pod setup時(shí),cocoapods會(huì)將這些podspec索引文件更新到本地的 ~/银萍。cocoapods/目錄下变勇,這個(gè)索引文件比較大,國(guó)內(nèi)網(wǎng)絡(luò)的問題贴唇,更新非常慢搀绣。

  • 國(guó)內(nèi)很多善丈人翁就在國(guó)內(nèi)建了新的地址,并及時(shí)和國(guó)外的保持同步戳气,大家使用之余要記得感恩链患,不過這些國(guó)內(nèi)的地址不時(shí)就會(huì)失效,目前最新的是https://gems.ruby-china.org

  • 使用方法:

pod repo remove master // 移除舊有鏡像資源地址
pod repo add master https://gems.ruby-china.org // 添加新的鏡像資源地址
pod repo update // 更新鏡像
  • 后續(xù)使用中進(jìn)行pod repo update 時(shí)(pod update瓶您、pod install 默認(rèn)執(zhí)行pod repo update命令)麻捻,會(huì)去更新獲取pod specs。

8呀袱、 使用注意:不是所有的庫都可以由CocoaPods管理贸毕。需要該第三方庫擁有.podspec才行。.podspec包含了該第三方庫的名稱夜赵、版本號(hào)明棍、下載地址、第三方庫依賴等信息寇僧。CocoaPods需要根據(jù)該信息才能找到對(duì)應(yīng)的下載地址

五摊腋、CocoaPods拓展-原理和組件化

CocoaPods原理
  • CocoaPods 背后的理念主要體現(xiàn)在兩個(gè)方面。首先,在工程中引入第三方代碼會(huì)涉及到許多內(nèi)容婉宰。針對(duì) Objective-C初級(jí)開發(fā)者來說,工程文件的配置會(huì)讓人很沮喪歌豺。在配置buildphases和linker flags過程中,會(huì)引起許多人為因素的 錯(cuò)誤推穷。CocoaPods 簡(jiǎn)化了這一切,它能夠自動(dòng)配置編譯選項(xiàng)心包。

  • 其次,通過 CocoaPods,可以很方便的查找到新的第三方庫。當(dāng)然,這并不是 說你可以簡(jiǎn)單的將別人提供的庫拿來拼湊成一個(gè)應(yīng)用程序馒铃。它的真正作用是讓你能夠找到真正好用的庫,以此來縮短我們的開發(fā)周期和提升軟件的質(zhì)量蟹腾。

  • CocoaPods的原理,它是將所有的依賴庫都放到另一個(gè)名為Pods項(xiàng)目中,然后讓主項(xiàng)目依賴Pods項(xiàng)目,這樣,源碼管理工作都從主項(xiàng)目移到了Pods項(xiàng)目中
    1、Pods項(xiàng)目最終會(huì)編譯成一個(gè)名為libPods.a的文件,主項(xiàng)目只需要依賴這個(gè).a 文件即可区宇。
    2娃殖、對(duì)于資源文件,CocoaPods提供了一個(gè)名為Pods-resources.sh的bash腳本, 該腳本在每次項(xiàng)目編譯的時(shí)候都會(huì)執(zhí)行,將第三方庫的各種資源文件復(fù)制到目 標(biāo)目錄中。
    3议谷、CocoaPods通過一個(gè)名為Pods.xcconfig的文件來在編譯時(shí)設(shè)置所有的依賴和 參數(shù)炉爆。

CocoaPods組件化

試想一下,既然CocoaPods能夠管理第三方庫,那為什么不管理公司自有的封裝庫芬首,方便公司內(nèi)部跨app使用和測(cè)試赴捞?在這種思路下,組件化就應(yīng)運(yùn)而生了郁稍。目前越來越多的公司CocoaPods來實(shí)現(xiàn)組件化赦政。有興趣的可以自行搜一下關(guān)于組件化的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耀怜,一起剝皮案震驚了整個(gè)濱河市恢着,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌财破,老刑警劉巖掰派,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異狈究,居然都是意外死亡碗淌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門抖锥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿眠,“玉大人,你說我怎么就攤上這事磅废∧上瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵拯勉,是天一觀的道長(zhǎng)竟趾。 經(jīng)常有香客問我,道長(zhǎng)宫峦,這世上最難降的妖魔是什么岔帽? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮导绷,結(jié)果婚禮上犀勒,老公的妹妹穿的比我還像新娘。我一直安慰自己妥曲,他們只是感情好贾费,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著檐盟,像睡著了一般褂萧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葵萎,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天导犹,我揣著相機(jī)與錄音唱凯,去河邊找鬼。 笑死谎痢,一個(gè)胖子當(dāng)著我的面吹牛波丰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舶得,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掰烟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了沐批?” 一聲冷哼從身側(cè)響起纫骑,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎九孩,沒想到半個(gè)月后先馆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躺彬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年煤墙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宪拥。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仿野,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出她君,到底是詐尸還是另有隱情脚作,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布缔刹,位于F島的核電站球涛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏校镐。R本人自食惡果不足惜亿扁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸟廓。 院中可真熱鬧从祝,春花似錦、人聲如沸肝箱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煌张。三九已至,卻和暖如春退客,著一層夾襖步出監(jiān)牢的瞬間骏融,已是汗流浹背链嘀。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留档玻,地道東北人怀泊。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像误趴,于是被迫代替她去往敵國(guó)和親霹琼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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