Fastlane自動化打包---打包上傳App Store Connect

Fastlane自動化打包---安裝篇
Fastlane自動化打包---配置篇
Fastlane自動化打包---打包上傳蒲公英篇

參考文檔:

3. 打包上傳App Store Connect

3.1 先貼上lane這里面講解的都是試驗成功的
desc "打包上傳到 App Store"
    lane :do_appstore do
        # 自動代碼簽名
        #enable_automatic_code_signing
        gym(
        clean:true,
        scheme:"項目名稱", #scheme
        configuration: "Release",#環(huán)境
        output_directory: "./Ipa",#ipa的存放目錄
        output_name: "項目名稱_" + get_version_number_from_plist() + "_" + get_build_number_from_plist() + "_" + Time.new.strftime("%Y-%m-%d %H-%M-%S"),

        export_options: {
                method: "app-store",
                provisioningProfiles: { 
                    "Bundle identifier": "發(fā)布證書"
                        }
                }
            )
        #upload_to_app_store
        # slack(message: "Successfully uploaded a new App Store build")
        # deliver(force: false, skip_screenshots: true, skip_metadata: true)
        # deliver(force: false)
        deliver(
        # ipa: "#{OUTPUT_DIRECTORY}" + "/" + "#{IPA_NAME}",
        # skip_screenshots: true,
        # skip_metadata: true
            )
    end
3.1.1 fastlane目錄
  • 先分析一下fastlane目錄
fastlane目錄
  • Appfile 這里面是app賬號和項目的team_id 的一些配置項
  • Fastfile這主要是 腳本編譯、打包和上傳等
  • Deliverfilemetadatascreenshots 主要是App Store Connect中的配置
  • (1)metadata目錄
    metadata目錄詳情

    注釋:metadata 主要是App Store Connect 中的配置項,宣傳文本、app名稱、關(guān)鍵字、隱私網(wǎng)址、app的logo
  • (1.1)review_information 文件主要是 App 審核信息 的配置、賬號、備注、聯(lián)系方式
  • (1.2)trade_representative_contact_information 文件主要是 商務(wù)代表聯(lián)系信息 的配置
  • (2)screenshots目錄
    screenshots目錄
  • 注釋:這個文件主要是各個尺寸屏幕的截圖
  • 如果沒有這些文件、或者也可以直接把Deliverfilemetadatascreenshots 這三個刪除掉執(zhí)行 deliver init 重新從App Store Connect拉取
$ fastlane deliver init
[?] ?? 
cat: ./fastlane/Fastfile: No such file or directory
[14:23:24]: Login to App Store Connect (`開發(fā)者賬號`)
[14:23:28]: Login successful

+--------------------------------------+------------------------+
|                    deliver 2.100.1 Summary                    |
+--------------------------------------+------------------------+
| run_precheck_before_submit           | false                  |
| screenshots_path                     | ./fastlane/screenshots |
| metadata_path                        | ./fastlane/metadata    |
| username                             | `開發(fā)者賬號`       |
| app_identifier                       | `Bundle identifier`  |
| edit_live                            | false                  |
| platform                             | ios                    |
| skip_binary_upload                   | false                  |
| use_live_version                     | false                  |
| skip_screenshots                     | false                  |
| skip_metadata                        | false                  |
| skip_app_version_update              | false                  |
| force                                | false                  |
| submit_for_review                    | false                  |
| reject_if_possible                   | false                  |
| automatic_release                    | false                  |
| phased_release                       | false                  |
| team_id                              |`team_id`             |
| dev_portal_team_id                   | `dev_portal_team_id`             |
| overwrite_screenshots                | false                  |
| precheck_default_rule_level          | warn                   |
| ignore_language_directory_validation | false                  |
| precheck_include_in_app_purchases    | true                   |
+--------------------------------------+------------------------+

[14:23:31]: Writing to './fastlane/metadata/zh-Hans/description.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/keywords.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/release_notes.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/support_url.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/marketing_url.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/promotional_text.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/name.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/subtitle.txt'
[14:23:31]: Writing to './fastlane/metadata/zh-Hans/privacy_url.txt'
[14:23:31]: Writing to './fastlane/metadata/copyright.txt'
[14:23:31]: Writing to './fastlane/metadata/primary_category.txt'
[14:23:31]: Writing to './fastlane/metadata/secondary_category.txt'
[14:23:31]: Writing to './fastlane/metadata/primary_first_sub_category.txt'
[14:23:31]: Writing to './fastlane/metadata/primary_second_sub_category.txt'
[14:23:31]: Writing to './fastlane/metadata/secondary_first_sub_category.txt'
[14:23:31]: Writing to './fastlane/metadata/secondary_second_sub_category.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/trade_name.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/first_name.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/last_name.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/address_line1.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/address_line2.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/address_line3.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/city_name.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/state.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/country.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/postal_code.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/phone_number.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/email_address.txt'
[14:23:31]: Writing to './fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/first_name.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/last_name.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/phone_number.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/email_address.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/demo_user.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/demo_password.txt'
[14:23:31]: Writing to './fastlane/metadata/review_information/notes.txt'
[14:23:31]: Successfully created new configuration files.
[14:23:31]: Downloading all existing screenshots...
[14:23:33]: Successfully downloaded all existing screenshots
[14:23:33]: Successfully created new Deliverfile at path './fastlane/Deliverfile'
  • 注釋:我發(fā)現(xiàn)證書和描述性文件也被拉取下來了
    fastlane目錄
3.1.2 代碼簽名

貼上官方lane證書簽名指南

lane :beta do
get_certificates           # invokes cert
get_provisioning_profile   # invokes sigh
build_app
end

貼上我測試過的自動簽名打包lane

desc "純打包,指定路徑"
lane :do_bale do
  get_certificates           # invokes cert
  get_provisioning_profile   # invokes sigh
  enable_automatic_code_signing
    gym(
       clean:true, #打包前clean項目
          export_method: "app-store", #導出方式
          scheme:"項目名稱", #scheme
          configuration: "Release",#環(huán)境
          output_directory: "./Ipa",#ipa的存放目錄
          output_name: "項目名稱_" + get_version_number_from_plist() + "_" + get_build_number_from_plist() + "_" + Time.new.strftime("%Y-%m-%d %H-%M-%S"), #輸出ipa的文件名為當前的build號和創(chuàng)建的時間

      )
  end

貼上我測試過的手動簽名打包lane

desc "純打包,指定路徑"
lane :do_bale do
    gym(
       clean:true, #打包前clean項目
          #export_method: "app-store", #導出方式
          scheme:"項目名稱", #scheme
          configuration: "Release",#環(huán)境
          output_directory: "./Ipa",#ipa的存放目錄
          output_name: "項目名稱_" + get_version_number_from_plist() + "_" + get_build_number_from_plist() + "_" + Time.new.strftime("%Y-%m-%d %H-%M-%S"), #輸出ipa的文件名為當前的build號和創(chuàng)建的時間

          export_options: {
                method: "ad-hoc",
                provisioningProfiles: { 
                        "Bundle identifier": "發(fā)布證書"
                 }
           }
      )
  end

注意:自動打包親測export_method: "app-store" 成功,method: "ad-hoc" 沒有成功
注意:手動指定簽名 export_method: "app-store"method: "ad-hoc"都成功

3.1.3 get_version_number_from_plist版本號和get_build_number_from_plistBuild號

參考fastlane插件

versioning插件

3.1.4 upload_to_app_storedeliver

貼上官方lane

lane :release do
  capture_screenshots                  # generate new screenshots for the App Store
  sync_code_signing(type: "appstore")  # see code signing guide for more information
  build_app(scheme: "MyApp")
  upload_to_app_store                  # upload your app to App Store Connect
  slack(message: "Successfully uploaded a new App Store build")
end
3.1.5最后執(zhí)行腳本
$ fastlane do_appstore
[?] ?? 
[15:45:01]: fastlane detected a Gemfile in the current directory
[15:45:01]: however it seems like you don't use `bundle exec`
[15:45:01]: to launch fastlane faster, please use
[15:45:01]: 
[15:45:01]: $ bundle exec fastlane do_appstore
[15:45:01]: 
[15:45:01]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile
+----------------------------+---------+----------------------------------------------+
|                                    Used plugins                                     |
+----------------------------+---------+----------------------------------------------+
| Plugin                     | Version | Action                                       |
+----------------------------+---------+----------------------------------------------+
| fastlane-plugin-pgyer      | 0.2.1   | pgyer                                        |
| fastlane-plugin-fir        | 0.3.0   | fir                                          |
| fastlane-plugin-versioning | 0.3.4   | get_version_number_from_git_branch           |
|                            |         | get_version_number_from_plist                |
|                            |         | get_build_number_from_plist ci_build_number  |
|                            |         | increment_version_number_in_plist            |
|                            |         | get_app_store_version_number                 |
|                            |         | get_info_plist_path                          |
|                            |         | increment_build_number_in_plist              |
+----------------------------+---------+----------------------------------------------+
  • (1) 上傳配置信息
  • 注釋:如果選擇上傳配置信息、就要確保配置信息無誤,如果有錯誤會有各種各樣的錯誤
  • 證書錯誤
  • 電話和郵箱格式不正確
  • ······· 要確保和手動填寫提交審核時的一樣
  • 如果是測試、要留意
+----------------------------------------------------------------------------+------------------------------------------------------------------------+

[16:11:25]: Making sure the latest version on App Store Connect matches '2.2.2' from the ipa file...
[16:11:27]: '2.2.2' is the latest version on App Store Connect
[16:11:31]: Loading './fastlane/metadata/zh-Hans/description.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/keywords.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/release_notes.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/support_url.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/marketing_url.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/promotional_text.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/name.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/subtitle.txt'...
[16:11:31]: Loading './fastlane/metadata/zh-Hans/privacy_url.txt'...
[16:11:31]: Loading './fastlane/metadata/copyright.txt'...
[16:11:31]: Loading './fastlane/metadata/primary_category.txt'...
[16:11:31]: Loading './fastlane/metadata/secondary_category.txt'...
[16:11:31]: Loading './fastlane/metadata/primary_first_sub_category.txt'...
[16:11:31]: Loading './fastlane/metadata/primary_second_sub_category.txt'...
[16:11:31]: Loading './fastlane/metadata/secondary_first_sub_category.txt'...
[16:11:31]: Loading './fastlane/metadata/secondary_second_sub_category.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/trade_name.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/first_name.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/last_name.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/address_line1.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/address_line2.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/address_line3.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/city_name.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/state.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/country.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/postal_code.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/phone_number.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/email_address.txt'...
[16:11:31]: Loading './fastlane/metadata/trade_representative_contact_information/is_displayed_on_app_store.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/first_name.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/last_name.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/phone_number.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/email_address.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/demo_user.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/demo_password.txt'...
[16:11:31]: Loading './fastlane/metadata/review_information/notes.txt'...
[?] Activating language zh-Hans... 
[?] Uploading metadata to App Store Connect 
[16:11:44]: Successfully uploaded set of metadata to App Store Connect
[16:11:45]: Starting with the upload of screenshots...
[?] Activating language zh-Hans... 
[16:11:48]: Uploading 11 screenshots for language zh-Hans
[16:11:48]: Uploading './fastlane/screenshots/screenshots/zh-Hans/1_iphone4_1.ftl_11d731b90df1c3645f919d2f51fe37a8_e60f7266d2656cfa5e64d22c1567285d.png'...
[16:11:51]: Uploading './fastlane/screenshots/screenshots/zh-Hans/1_iphone6Plus_1.ftl_99bb9bd51f334680d95e3b1b8fc0ef04_076e191d45fe34764f4e6ed5704aee81.png'...
[16:11:56]: Uploading './fastlane/screenshots/screenshots/zh-Hans/1_iphone6_1.ftl_4e9ce811abd345622b10489f845c3b29_f501e81c3e63f21112e6d32ca4ed9ac4.png'...
[16:11:59]: Uploading './fastlane/screenshots/screenshots/zh-Hans/2_iphone4_2.ftl_facee086666c5c79b9441235b0c94778_89c9e2b1813d8bfe5ae9ceb976e1a1a0.png'...
[16:12:03]: Uploading './fastlane/screenshots/screenshots/zh-Hans/2_iphone6Plus_2.ftl_ae5048f1552f8600f6f44ee7269d581a_10b76cd5ff6943ee458b1696864df2d4.png'...
[16:12:08]: Uploading './fastlane/screenshots/screenshots/zh-Hans/2_iphone6_2.ftl_08074a0506500331aeebda7288539c16_02168c78e7f37da3b1bda572ad42d7ef.png'...
[16:12:13]: Uploading './fastlane/screenshots/screenshots/zh-Hans/3_iphone4_3.ftl_7ab14d6392ed2e0d00edcc255f146cf9_a1da622644dae3918463434422b93e4f.png'...
[16:12:16]: Uploading './fastlane/screenshots/screenshots/zh-Hans/3_iphone6Plus_3.ftl_df9239345fc94a1ee5119d9930742e6a_b50dd8d0c3d4d99db41ab78e7125f32c.png'...
[16:12:21]: Uploading './fastlane/screenshots/screenshots/zh-Hans/3_iphone6_3.ftl_7cfd678b4285f23a03810d47d537181c_6f7c2fd5ee0f1c7dd1852e54039c7093.png'...
[16:12:24]: Uploading './fastlane/screenshots/screenshots/zh-Hans/4_iphone4_4.ftl_bf910dacc0a8aa47ff661d34ea4e2d65_23da69b031d8eeb28bdb5bfdaeec976c.png'...
[16:12:26]: Uploading './fastlane/screenshots/screenshots/zh-Hans/4_iphone6_4.ftl_d0c67f5b2aa28012a92e9600d616f926_bdf7a019e3f5da3d0aa9d5c80c4b43a2.png'...
[?] Saving changes 
[16:12:36]: Successfully uploaded screenshots to App Store Connect
[16:12:39]: Uploading app icon...
[16:12:49]: Uploading binary to App Store Connect
[16:12:50]: Going to upload updated app to App Store Connect
[16:12:50]: This might take a few minutes. Please don't interrupt the script.
[16:16:31]: iTunes Transporter successfully finished its job
[16:16:31]: ------------------------------------------------------------------------------------------------------------------
[16:16:31]: --- Successfully uploaded package to App Store Connect. It might take a few minutes until it's visible online. ---
[16:16:31]: ------------------------------------------------------------------------------------------------------------------
[16:16:31]: Finished the upload to App Store Connect

+------+-------------------------------+-------------+
|                  fastlane summary                  |
+------+-------------------------------+-------------+
| Step | Action                        | Time (in s) |
+------+-------------------------------+-------------+
| 1    | default_platform              | 0           |
| 2    | get_version_number_from_plist | 1           |
| 3    | get_build_number_from_plist   | 1           |
| 4    | gym                           | 41          |
| 5    | deliver                       | 311         |
+------+-------------------------------+-------------+

[16:16:31]: fastlane.tools just saved you 6 minutes! ??
  • (1.1) 補充
  • Deliverfile也可以配置信息,而且優(yōu)先級比較高,如果在這里配置了,上傳的時候就會優(yōu)先獲取Deliverfile文件中的配置
  • 貼上我的Deliverfile文件中的配置,有部分注釋掉了
force(true);
automatic_release(true);
run_precheck_before_submit(false);
precheck_include_in_app_purchases(false);

# skip_metadata(true);
metadata_path("./fastlane/metadata");

# skip_screenshots(true);
screenshots_path("./fastlane/screenshots/screenshots");

# languages(['zh-Hans']);

# release_notes({
#   'default' => "Shiny and new",
# })

# promotional_text( 
#   "default" => "xxxx"
# )

# App 審核信息
# app_review_information(
#   first_name: "first_name",
#   last_name: "last_name",
#   phone_number: "+8615658820987",
#   email_address: "jimmylot@126.com",
#   demo_user: "+8615658820987",
#   demo_password: "9527",
#   notes: "備注信息"
# )

# trade_representative_contact_information(
#   first_name: "first_name",
#   last_name: "last_name",
#   address_line1: "address_line1",
#   address_line2: "address_line2",
#   address_line3: "address_line3",
#   city_name: "city_name",
#   state: "state",
#   country: "country",
#   postal_code: "postal_code",
#   phone_number: "+8615658820987",#位數(shù)必須正確
#   email_address: "jimmylot@126.com",
#   is_displayed_on_app_store:"false",
#   trade_name:"XXXXXXXX Financial Information Service Co., Ltd."
# )

# # 如果選擇提交審核,請認真對照以下參數(shù)選項,根據(jù)自家App實際情況配置,如果配置錯誤,將不能提交成功
submission_information({
export_compliance_available_on_french_store: false,
export_compliance_contains_proprietary_cryptography: false,
export_compliance_contains_third_party_cryptography: false,
export_compliance_is_exempt: false,
export_compliance_uses_encryption: false,
export_compliance_app_type: nil,
export_compliance_encryption_updated: false,
export_compliance_compliance_required: false,
export_compliance_platform: "ios",
content_rights_contains_third_party_content: false,
content_rights_has_rights: false,
add_id_info_limits_tracking: true,
add_id_info_serves_ads: true,
add_id_info_tracks_action: false,
add_id_info_tracks_install: false,
add_id_info_uses_idfa: true
});
  • (2) 不上傳配置信息
  • 如果選擇不上傳 就跳過配置信息,這樣就只上傳一個 ipa 的包
skip_screenshots: true,
skip_metadata: true
[16:06:37]: Making sure the latest version on App Store Connect matches '2.2.2' from the ipa file...
[16:06:40]: '2.2.2' is the latest version on App Store Connect
[16:06:44]: Uploading binary to App Store Connect
[16:06:44]: Going to upload updated app to App Store Connect
[16:06:44]: This might take a few minutes. Please don't interrupt the script.
[16:10:12]: iTunes Transporter successfully finished its job
[16:10:12]: ------------------------------------------------------------------------------------------------------------------
[16:10:12]: --- Successfully uploaded package to App Store Connect. It might take a few minutes until it's visible online. ---
[16:10:12]: ------------------------------------------------------------------------------------------------------------------
[16:10:12]: Finished the upload to App Store Connect

+------+-------------------------------+-------------+
|                  fastlane summary                  |
+------+-------------------------------+-------------+
| Step | Action                        | Time (in s) |
+------+-------------------------------+-------------+
| 1    | default_platform              | 0           |
| 2    | get_version_number_from_plist | 1           |
| 3    | get_build_number_from_plist   | 1           |
| 4    | gym                           | 39          |
| 5    | deliver                       | 221         |
+------+-------------------------------+-------------+

[16:10:12]: fastlane.tools finished successfully ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

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