AndroidStudio發(fā)布項(xiàng)目到Maven(JCenter)

寫在前面:

? ? 之前在寫項(xiàng)目時(shí)瘪松,喜歡將重復(fù)的功能或者自定義控件封裝到公用的模塊中围小,方便其他項(xiàng)目共用。當(dāng)項(xiàng)目越來(lái)越多酣衷,很多項(xiàng)目都依賴了這個(gè)公用模塊時(shí)交惯,其中某一個(gè)項(xiàng)目中對(duì)公用模塊中的代碼進(jìn)行了修改,此時(shí)其他依賴該公共模塊的項(xiàng)目不得不做出修改或者同步代碼,是不是相當(dāng)麻煩席爽?因此就不得不將公用模塊打包成.aar文件(不清楚.aar文件的童鞋請(qǐng)自行Google或Baidu)意荤,公開(kāi)或放在私服提供給各個(gè)項(xiàng)目使用。這里我們就隨著前輩們的腳步來(lái)學(xué)習(xí)如何將項(xiàng)目模塊發(fā)布至Maven倉(cāng)庫(kù)只锻。真正做到只需一處修改玖像,四處升級(jí)即可。本文將介紹發(fā)布到Maven的三種方式齐饮。最終將項(xiàng)目發(fā)布遠(yuǎn)程Maven倉(cāng)庫(kù)后添加至JCenter捐寥,供其他人使用你的公共庫(kù)。

1:Maven的定義:

簡(jiǎn)單來(lái)說(shuō)祖驱,Maven是項(xiàng)目(Software Project)管理工具握恳。對(duì)于maven來(lái)說(shuō),一個(gè)軟件工程的唯一標(biāo)識(shí)是由開(kāi)發(fā)者(groupId)羹膳、生成物(artifactId)睡互、版本(version) 共同決定的。每個(gè)工程都有一個(gè)打包類型陵像,可以是jar, aar,war, ear 或 pom就珠,打包類型決定了工程最終產(chǎn)物的類型,其中pom類型用于構(gòu)件多模塊工程醒颖。其內(nèi)部工作機(jī)制是通過(guò)解析pom.xml文件中的配置獲取jar包或aar資源地址自動(dòng)將資源download到Peoject中妻怎,省去了手動(dòng)下載到本地的繁瑣過(guò)程。

2:Maven的存儲(chǔ)位置:

遠(yuǎn)程Maven倉(cāng)庫(kù)是存儲(chǔ)服務(wù)器的物理空間上泞歉,本文介紹是將Maven發(fā)布到第三方OSS服務(wù)商Bintray的存儲(chǔ)空間上逼侦。

發(fā)布代碼到Maven的三種方式

一:發(fā)布到本地Maven

1:uploadArchives配置和Task生成

在要發(fā)布的模塊build.gradle中配置uploadArchives屬性,示例代碼:

//添加這一行腰耙,告訴gradle應(yīng)用到項(xiàng)目中
apply plugin: 'maven'
//配置模塊未本地Maven倉(cāng)庫(kù)
uploadArchives{
    repositories.mavenDeployer{
        // 配置本地倉(cāng)庫(kù)路徑榛丢,這里是項(xiàng)目的根目錄下的maven目錄中
        repository(url: uri('../maven'))
        // 唯一標(biāo)識(shí) 一般為模塊包名 也可其他
        pom.groupId = "com.android.imusic.player.lib"
        // 項(xiàng)目名稱(一般為模塊名稱 也可其他
        pom.artifactId = "music-player-lib"
        // 發(fā)布的版本號(hào)
        pom.version = "1.0.0"
    }
}
uploadArchives配置截圖圖示

配置后Sync Now一把,Studio編輯器右上角Gradle中你要發(fā)布的模塊下會(huì)多出一個(gè)upload目錄挺庞,目錄中有個(gè)uploadArchives任務(wù)腳本晰赞,這個(gè)腳本就是將庫(kù)發(fā)布到本地或私服Maven倉(cāng)庫(kù)的Task。

2:執(zhí)行uploadArchives任務(wù)

點(diǎn)擊如圖所示的uploadArchives


uploadArchives在Studio中圖示

uploadArchives有兩種運(yùn)行方法:1:雙擊運(yùn)行选侨。2:在AndroidStudio自帶的Terminal中執(zhí)行 gradlew uploadArchives 命令運(yùn)行掖鱼。根據(jù)喜好選取一種即可,開(kāi)始任務(wù)后等待編譯完成援制。


編譯到Maven成功圖示

編譯完成后在你項(xiàng)目的根目錄會(huì)生成一個(gè)maven目錄戏挡,在目錄maven->com.android.imusic.ib->music-player-lib->1.0.0中會(huì)有個(gè)music-player-lib.aar 文件,這個(gè)文件就是打包簽名好的庫(kù)文件晨仑。
模塊編譯到Maven完成圖示

3:應(yīng)用music-player-lib.aar庫(kù)文件到項(xiàng)目中

  • 3.1:項(xiàng)目根目錄build.gradle配置Maven
    在你的項(xiàng)目中根目錄下的build.gradle中配置如下代碼:
allprojects {
    repositories {
        google()
        jcenter()
        //本地Maven倉(cāng)庫(kù)地址,取決于你的磁盤目錄
        maven {
            url 'file://D://AndroidStudioProjects//IMusic//maven'
        }
    }
}
  • 3.2:app中的build.gradle配置
    在你想要依賴.aar的模塊中的build.gradle中配置如下代碼:
//應(yīng)用這個(gè)依賴,這里填寫剛才配置的包名+庫(kù)名
implementation 'com.android.imusic.lib:music-player-lib:1.0.0'
  • 或者你可以不配置本地倉(cāng)庫(kù)褐墅,直接將.aar文件復(fù)制到你的app模塊中直接使用拆檬,配置代碼如下:
//在你的app中的build.gradle中配置
android {
        repositories {
            flatDir {
                dirs 'libs'
            }
        }
    }
//添加依賴
implementation(name: 'music-player-lib-1.0.0', ext: 'aar')

點(diǎn)擊Sync Now等待完成后發(fā)布依賴到本地Maven就成功啦!在發(fā)布到本地Maven前你應(yīng)該要校驗(yàn)混淆開(kāi)啟的情況噢~免得他人依賴你的項(xiàng)目時(shí)掉坑里去了掌栅。發(fā)布到本地Maven固然方便秩仆,但是公司項(xiàng)目團(tuán)隊(duì)人數(shù)較多時(shí),將模塊打包成.aar文件后復(fù)制到項(xiàng)目多少有點(diǎn)不方便猾封,比如所A程序員的本地Maven路徑是在D盤澄耍,而B(niǎo)程序員的Maven路徑又在E盤,這樣同步代碼改來(lái)改去著實(shí)難受晌缘,所以接下來(lái)就介紹適應(yīng)公司內(nèi)部團(tuán)隊(duì)多人開(kāi)發(fā)的場(chǎng)景齐莲,即將代碼發(fā)布至局域網(wǎng)倉(cāng)庫(kù)。

二:發(fā)布到局域網(wǎng)Maven

局域網(wǎng)部署需要用到私服部署磷箕,這里跟隨前輩腳步介紹使用Nexus來(lái)搭建部署局域網(wǎng)Maven倉(cāng)庫(kù)选酗。

1:安裝部署Nexus(這里用nexus-2.14.2-01版本演示)

點(diǎn)此前往下載nexus-2.14.2-01
下載解壓后會(huì)看到目錄下下面幾個(gè)文件夾

nexus目錄文件預(yù)覽圖示

目錄下批處理腳本釋義:
console-nexus.bat--->常規(guī)安裝Nexus服務(wù)
install-nexus--->啟動(dòng)開(kāi)機(jī)自啟動(dòng)Nexus服務(wù)
start-nexus.bat--->啟動(dòng)Nexus服務(wù)
stop-nexus.bat--->停止Nexus服務(wù)
uninstall-nexus.bat--->卸載Nexus組件
wrapper.exe--->桌面程序

  • 鼠標(biāo)右鍵"console-nexus.bat"以管理員身份運(yùn)行,等待CMD創(chuàng)建安裝完成后在瀏覽器輸入:http://localhost:8081/nexus岳枷。
    安裝和成功啟動(dòng)后是這樣的
    Nexus啟動(dòng)默認(rèn)界面圖示

2:Nexus倉(cāng)庫(kù)配置

  • 2.1:點(diǎn)擊右上角Log In芒填,登錄默認(rèn)賬號(hào),默認(rèn)賬號(hào):admin 密碼:admin123


    Maven登錄圖示
  • 2.2:修改默認(rèn)密碼


    Maven賬號(hào)默認(rèn)密碼修改圖示

    按照步驟修改密碼即可,如果需要修改默認(rèn)的端口號(hào),修根目錄下的conf-nexus.properties文件中的application-port=8081一欄空繁,將8081替換你指定的端口號(hào):殿衰、


    Nexus端口號(hào)修改圖示

    配置就緒后,準(zhǔn)備發(fā)布盛泡,發(fā)布后你的項(xiàng)目路徑如圖所示:
    Nexus項(xiàng)目存儲(chǔ)Maven管理目錄

3:準(zhǔn)備發(fā)布

  • 3.1:模塊的build.gradle配置
apply plugin: 'com.android.library'
//應(yīng)用到Maven
apply plugin: 'maven'

android {
    compileSdkVersion 26
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

//打包main目錄下代碼和資源的 task
task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}
//配置需要上傳到maven倉(cāng)庫(kù)的文件
artifacts {
    archives androidSourcesJar
}
//上傳到Maven倉(cāng)庫(kù)的task
uploadArchives {
    repositories {
        mavenDeployer {
            //指定maven的倉(cāng)庫(kù)url闷祥,IP+端口+目錄
            repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {
                //填寫你的Nexus的賬號(hào)密碼
                authentication(userName: "admin", password: "123456")
            }
            // 唯一標(biāo)識(shí) 一般為模塊包名 也可其他
            pom.groupId = "com.android.imusic.lib"
            // 項(xiàng)目名稱(一般為模塊名稱 也可其他
            pom.artifactId = "music-player-lib"
            // 發(fā)布的版本號(hào)
            pom.version = "1.0.0"
        }
    }
}
  • 3.2:執(zhí)行uploadArchives,將項(xiàng)目發(fā)布到Nexus
    執(zhí)行uploadArchives或者使用Studio自帶的Terminal中執(zhí)行 gradlew uploadArchives 命令開(kāi)始構(gòu)建運(yùn)行傲诵。等待結(jié)束后凯砍,瀏覽器打開(kāi)Nexus,查看Repositories->Releases 目錄拴竹。成功發(fā)布后的代碼庫(kù)模塊目錄如圖所示:
    發(fā)布代碼到Nexus成功圖示

4:使用局域網(wǎng)Nexus存儲(chǔ)庫(kù)代碼庫(kù)

  • 4.1:根build.gradle配置修改
    在你的項(xiàng)目中的根build.gradle中添加如下代碼
allprojects {
    repositories {
        google()
        jcenter()
        //本地Maven倉(cāng)庫(kù)地址,取決于你的磁盤目錄
        maven {
            //這里本地不再使用悟衩,改用下面的局域網(wǎng)的路徑
            //url 'file://D://AndroidStudioProjects//IMusic//maven',
            //添加本地倉(cāng)庫(kù)URL
            url 'http://localhost:8081/nexus/content/repositories/releases/'
        }
    }
}
  • 4.2:app模塊中build.gradle配置修改
    在你的項(xiàng)目中要使用代碼庫(kù)的模塊中的build.gradle做如下修改:
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //和剛才使用本地Maven倉(cāng)庫(kù)一致:包名+庫(kù)名
    implementation 'com.android.imusic.lib:music-player-lib:1.0.0'

到此,發(fā)布代碼到本地倉(cāng)庫(kù)到此結(jié)束了栓拜。但是隨之又來(lái)了一個(gè)問(wèn)題局待,局域網(wǎng)倉(cāng)庫(kù)對(duì)公司團(tuán)隊(duì)來(lái)說(shuō)固然是好,但是你開(kāi)發(fā)的模塊很牛逼的時(shí)候菱属,別人要用你的模塊時(shí)怎么辦?這個(gè)時(shí)候就需要將模塊發(fā)布至外網(wǎng)倉(cāng)庫(kù)舰罚,即發(fā)布代碼至JCenter纽门。

三:發(fā)布到外網(wǎng)Maven

發(fā)布到外網(wǎng)Maven,本問(wèn)介紹發(fā)布到JCenter上营罢。在早期的AndroidStudio版本中赏陵,Google默認(rèn)使用的倉(cāng)庫(kù)是mavenCentral饼齿,但由于發(fā)布流程太復(fù)雜(前輩們是這樣分析的,不知道對(duì)不對(duì))蝙搔,后來(lái)改用默認(rèn)倉(cāng)庫(kù)是JCenter,說(shuō)了這么久還沒(méi)介紹JCenter是什么缕溉?簡(jiǎn)單來(lái)說(shuō)JCenter是Bintray其下的一個(gè)分區(qū)倉(cāng)庫(kù),代碼托管的存儲(chǔ)空間吃型。那既然JCenter是屬于Bintray旗下的证鸥,那就首先得從Bintray開(kāi)始。

1:Bintray賬號(hào)準(zhǔn)備

Bintray是一家OSS服務(wù)商勤晚,類似國(guó)內(nèi)的阿里云OSS枉层。要將代碼發(fā)布之JCenter,必須先有Bintray賬號(hào)和分區(qū)目錄赐写。感興趣可以去看下AndroidStudio的Bintray庫(kù)在Giuhub中的項(xiàng)目:Bintray-Github鸟蜡。注冊(cè)賬號(hào)我們注冊(cè)個(gè)人賬號(hào)即可。前往Bintray官網(wǎng)個(gè)人賬號(hào)注冊(cè)挺邀。

  • 注意:1.注冊(cè)賬號(hào)最好注冊(cè)個(gè)人的揉忘,不然企業(yè)賬號(hào)沒(méi)有add To Jcenter功能,需要收費(fèi)端铛。2:注冊(cè)的郵箱一定要使用國(guó)外的郵箱泣矛,不然注冊(cè)沒(méi)反應(yīng)。


    Bintray賬號(hào)注冊(cè)圖示

2:為Bintray賬號(hào)添加組織

添加組織有兩種方式:1:創(chuàng)建Bintray組織沦补。2:導(dǎo)入第三方托管平臺(tái)組織乳蓄。

2.1:創(chuàng)建Bintray組織

在bintray主頁(yè)鼠標(biāo)放至頭像彈窗的Menu框中點(diǎn)擊createOrganization->界面跳轉(zhuǎn)后點(diǎn)擊->Create new organization創(chuàng)建新的組織。


創(chuàng)建組織入口圖示

按照提示填寫組織基本信息提交即可夕膀。


Bintray組織資料圖示
2.2:導(dǎo)入第三方平臺(tái)組織

Bintray支持第三方托管平臺(tái)的組織導(dǎo)入虚倒,但目前為止只支持從Github導(dǎo)入組織到Bintray。

  • 2.2.1:導(dǎo)入Github組織
    在bintray主頁(yè)鼠標(biāo)放至頭像彈窗的Menu框中點(diǎn)擊createOrganization->再點(diǎn)擊Import from GitHub導(dǎo)入Github賬號(hào)組織产舞。第一次導(dǎo)入官方會(huì)給出操作流程圖魂奥,如下:


    Bintray導(dǎo)入Github組織流程圖示
  • 2.2.1.1 前往Github設(shè)置中心
    點(diǎn)擊圖中標(biāo)記的Account Setting page,前往Github設(shè)置中心界面易猫。跳轉(zhuǎn)至Github的設(shè)置中心后依次點(diǎn)擊左側(cè)的Applications耻煤,展開(kāi)界面后點(diǎn)擊右側(cè)的Authorized OAuth Apps,展開(kāi)列表就可看到支持列表中有bintray了准颓。


    授權(quán)設(shè)置及操作圖示
  • 2.2.1.2 授權(quán)Bintray訪問(wèn)Github賬戶的權(quán)限
    點(diǎn)擊Bintray一欄中的Grant哈蝇,授予Bintray訪問(wèn)Github賬戶的權(quán)限。


    Github授權(quán)Bintray訪問(wèn)權(quán)限圖示
  • 2.2.2:填寫第三方組織在Bintray中的基本信息
    授予訪問(wèn)權(quán)限后攘已,再次走導(dǎo)入Github組織流程炮赦,選擇你的組織后,根據(jù)界面提示填寫基本信息提交即可样勃。

3:創(chuàng)建Bintray存儲(chǔ)分區(qū)

點(diǎn)擊Add New Repository創(chuàng)建存儲(chǔ)分區(qū)


創(chuàng)建存儲(chǔ)分區(qū)入口圖示

按圖中所示吠勘,填寫分區(qū)基本信息


填寫分區(qū)基本信息圖示

創(chuàng)建成功后是這樣的
存儲(chǔ)分區(qū)建成功

4:模塊build.gradle配置

4.1:在你項(xiàng)目的根build.gradle中配置bintray環(huán)境依賴
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        //添加bintray環(huán)境
        classpath 'com.novoda:bintray-release:0.8.1'
    }
}
4.2:在你要發(fā)布的模塊build.gradle中配置如下配置
apply plugin: 'com.novoda.bintray-release'

//推送到Bintray配置
publish {
    //你的賬戶bintray下某個(gè)組織id
    userOrg = 'xxxxxx'
    //Maven倉(cāng)庫(kù)下庫(kù)的包名,一本與包名相同
    groupId = 'xxx.xxx.xxx'
    //項(xiàng)目名稱
    artifactId = 'xxx'
    //版本號(hào)
    publishVersion = '1.0.0'
    //項(xiàng)目介紹性芬,可以不寫
    desc = 'xxx'
    //項(xiàng)目主頁(yè),可以不寫
    website = 'xxx'
}

最終的依賴地址是compile '倉(cāng)庫(kù)包名:項(xiàng)目名稱:版本號(hào)'

5:編譯并發(fā)布到Bintray

5.1:獲取Bintray API Key

在你的Bintray主頁(yè)點(diǎn)擊右上角頭像 右上角用戶名–>Edit Your Profile -> API Key –>輸入密碼–>Submit–>Show剧防。復(fù)制API key備用植锉。


Bintray獲取API KEY圖示
5.2:運(yùn)行發(fā)布命令

在AndroidStudio編譯器自帶的Terminal中輸入命令:

gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
//BINTRAY_USERNAME替換為你的Bintray用戶名,BINTRAY_KEY替換為你剛才獲取的Bintray API KEY
//PdryRun釋義:false:編譯且將你的項(xiàng)目上傳至Bintray 峭拘,true:只是構(gòu)建你的項(xiàng)目俊庇,不會(huì)上傳

如果你在編譯中遇到問(wèn)題,請(qǐng)前往AndroidStudio發(fā)布項(xiàng)目到Bintray遇到的錯(cuò)誤及解決
開(kāi)始構(gòu)建后耐心等待棚唆,可能會(huì)因?yàn)閟ocket出現(xiàn)多次上傳失敗暇赤,重試即可。直到出現(xiàn)這個(gè)表示上傳成功宵凌。

發(fā)布到Bintray成功

上傳完成后可在你的主頁(yè)或者組織下查看
上傳到Bintray成功圖示

6:添加至JCenter

點(diǎn)擊右下角add to JCenter鞋囊,確認(rèn)后點(diǎn)擊send提交,等待審核通過(guò)瞎惫。(白天提交會(huì)到晚上才審核通過(guò)溜腐,因?yàn)橛袝r(shí)差,在他們上班時(shí)間提交瓜喇,會(huì)立即審核通過(guò))


添加項(xiàng)目至JCenter圖示

send后挺益,等待審核通過(guò),通過(guò)后即可在外網(wǎng)使用你的庫(kù)作為依賴了乘寒。


發(fā)送代碼到JCenter信息填寫圖示

這個(gè)是Bintray回復(fù)的站內(nèi)通知
添加至JCenter通過(guò)圖示

7:項(xiàng)目引用JCenter庫(kù)

7.1未添加至JCenter引用:
  • 7.1.1:在根build.gradle中配置如下代碼
allprojects {
    repositories {
        //bintray環(huán)境
        maven { url 'https://dl.bintray.com/novoda-oss/snapshots/' }
        //你的maven路徑
        maven { url 'https://dl.bintray.com/你的id/maven' }
    }
}
  • 7.1.2:在app模塊中的build.gradle中配置如下代碼
dependencies {
    //添加你的項(xiàng)目依賴地址,如下規(guī)則
    implementation '倉(cāng)庫(kù)包名:項(xiàng)目名稱:版本號(hào)'
    //例如我的:
    //implementation 'com.imusic.player:music-player:1.0.0'
}
7.2:已添加至JCenter引用:
  • 7.2.1:在根build.gradle中配置如下代碼
allprojects {
    repositories {
        //bintray環(huán)境
        maven { url 'https://dl.bintray.com/novoda-oss/snapshots/' }
        //添加支持JCenter即可
        jcenter()
    }
}
  • 7.2.2:在app模塊中的build.gradle中配置如下代碼
dependencies {
    //添加你的項(xiàng)目依賴地址,如下規(guī)則 
    implementation '倉(cāng)庫(kù)包名:項(xiàng)目名稱:版本號(hào)'
    //例如我的:
    //implementation 'com.imusic.player:music-player:1.0.0'
}

至此望众,全部Maven及JCenter發(fā)布流程完畢,版本更新時(shí)只需要更改配置版本號(hào)重新發(fā)布即可伞辛。祝君耍的愉快~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烂翰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚤氏,更是在濱河造成了極大的恐慌甘耿,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竿滨,死亡現(xiàn)場(chǎng)離奇詭異佳恬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)于游,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門毁葱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人贰剥,你說(shuō)我怎么就攤上這事头谜。” “怎么了鸠澈?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵柱告,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我笑陈,道長(zhǎng)际度,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任涵妥,我火速辦了婚禮乖菱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蓬网。我一直安慰自己窒所,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布帆锋。 她就那樣靜靜地躺著吵取,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锯厢。 梳的紋絲不亂的頭發(fā)上皮官,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音实辑,去河邊找鬼捺氢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剪撬,可吹牛的內(nèi)容都是我干的摄乒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼残黑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼馍佑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起萍摊,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挤茄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后冰木,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體穷劈,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年踊沸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歇终。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逼龟,死狀恐怖评凝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腺律,我是刑警寧澤奕短,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布宜肉,位于F島的核電站,受9級(jí)特大地震影響翎碑,放射性物質(zhì)發(fā)生泄漏谬返。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一日杈、第九天 我趴在偏房一處隱蔽的房頂上張望遣铝。 院中可真熱鬧,春花似錦莉擒、人聲如沸酿炸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)填硕。三九已至,卻和暖如春蝇裤,著一層夾襖步出監(jiān)牢的瞬間廷支,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工栓辜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恋拍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓藕甩,卻偏偏與公主長(zhǎng)得像施敢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狭莱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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