不想用Android Studio被辑,教你如何用vscode搭建原生app開發(fā)環(huán)境

目錄結(jié)構(gòu)

一、JDK環(huán)境搭建

1. 什么是JDK

2. 如何下載JDK

3.配置JDK環(huán)境

二敬惦、用命令行工具搭建安卓環(huán)境

1. 下載命令行工具盼理,及其使用

2. 通過命令行工具下載cmdline-tools;latest

3. 通過命令行工具下載安卓SDK

4. 通過命令行工具下載仿真鏡像及模擬器

5. 設(shè)置GRADLE_USER_HOME

三、vscode配置

1. 安裝Android for VS Code插件

2. 添加vscode任務(wù)俄删,嵌入安卓命令行

3. 添加任務(wù)快捷鍵

4. 添加vscode的調(diào)試選項(xiàng)宏怔,利用安卓命令行任務(wù)

5. 利用真機(jī)調(diào)試app

6. 利用模擬器調(diào)試app

四、擴(kuò)展知識

一畴椰、JDK環(huán)境搭建

1. 什么是JDK

Java Development Kit(Java 開發(fā)工具包)的縮寫臊诊。用于 java 程序的開發(fā),提供給程序員使用斜脂。和JDK有個(gè)比較接近的名詞叫做JRE抓艳,JRE的全稱是Java Runtime Environment,JRE是java程序運(yùn)行時(shí)需要提供的運(yùn)行時(shí)環(huán)境帚戳,很顯然JDK會(huì)包含JRE玷或。對于不需要開發(fā)java程序(APP或者前端后臺(tái)服務(wù)器等),而是只需要提供java程序運(yùn)行環(huán)境的只要有JRE就可以了片任。而對于需要開發(fā)java的我們來說偏友,電腦環(huán)境中必須有JDK環(huán)境才能進(jìn)行開發(fā)。

2. 如何下載JDK

  1. 從Oracle的官網(wǎng)下对供,網(wǎng)址是 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html下載對應(yīng)的版本位他,但是個(gè)人覺得這個(gè)比較慢,而且還要注冊賬戶登錄
  2. 從別人分享的阿里云下載鏈接下載犁钟,網(wǎng)址是https://blog.csdn.net/xinquanv1/article/details/106304339棱诱,需要選擇對應(yīng)的版本下載,我這邊對應(yīng)選擇的下載地址是https://code.aliyun.com/kar/oracle-jdk/raw/3c932f02aa11e79dc39e4a68f5b0483ec1d32abe/jdk-8u251-windows-x64.exe

3.配置JDK環(huán)境

  1. 把下載下來的jdk-8u251-windows-x64.exe進(jìn)行安裝涝动,這里建議把所有安卓開發(fā)的軟件都安裝在同一個(gè)目錄下面迈勋,這樣可以方便處理,我這邊安裝目錄是E:\android
  2. 對Windows的環(huán)境變量進(jìn)行如下設(shè)置醋粟,添加環(huán)境變量
添加環(huán)境變量   CLASSPATH      賦值    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;  
添加環(huán)境變量   JAVA_HOME      賦值    E:\android\jdk1.8.0_251
添加環(huán)境變量   path           增加    %JAVA_HOME%\bin;  %JAVA_HOME%\jre\bin
class path

java home

java path
  1. 打開cmd終端靡菇,并輸入java -version,最后顯示如下圖重归,則代表JDK環(huán)境設(shè)置完成
    java ver

二、用命令行工具搭建安卓環(huán)境

1. 下載命令行工具厦凤,及其使用

  1. 我們從安卓開發(fā)者的官網(wǎng)上下載命令行工具鼻吮,網(wǎng)址是https://developer.android.google.cn/studio?hl=zh-cn打卡網(wǎng)頁后,不用管Android Studio相關(guān)的下載较鼓,直接往下拉椎木,拉到最底下。然后再向上稍微滾動(dòng)幾下博烂,看到如下界面香椎,選擇相應(yīng)的系統(tǒng)下載即可
    cmdline
  2. 接著解壓下載的壓縮文件,并把里面的tools解壓到安卓軟件相關(guān)的目錄下禽篱,我這邊是E:\android\sdk
  3. 把解壓之后的目錄添加到環(huán)境變量path中畜伐,添加E:\android\sdk\tools和E:\android\sdk\tools\bin


    tools path
  4. 重新打開一個(gè)新的cmd終端,輸入sdkmanager --list會(huì)顯示出你已經(jīng)安裝的包躺率,和其他沒有安裝的包玛界,如下圖所示,其中的Installed packages是已經(jīng)安裝的包列表悼吱,而Available Packages是未安裝的包列表慎框,不是說所有包都必須安裝,安裝我們需要的包即可
    sdk list

2. 通過命令行工具下載基礎(chǔ)工具包

  1. 使用sdkmanager --list輸出可以安裝的包舆绎,我們找到cmdline-tools鲤脏,我們這里安裝最新的版本latest 。找到platform-tools并進(jìn)行安裝吕朵。這里的cmdline-tools其實(shí)就是我們下載的命令行工具猎醇,只是為了符合sdk的路徑添加的path。而platform-tools則是我們app調(diào)試需要用到的工具努溃,比如adb硫嘶、fastboot等

    cmdline

    platform tools

  2. 通過sdkmanager --install cmdline-tools;latest platform-tools

  3. 添加環(huán)境變量E:\android\sdk\cmdline-tools\latest\bin和E:\android\sdk\platform-tools到path

3. 通過命令行工具下載安卓SDK

  1. 確定我們需要開發(fā)的api級別,不同的api對應(yīng)不同的系統(tǒng)版本梧税,具體可以參考https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element?hl=zh-cn我們這里用API 級別為28的sdk
  2. 使用sdkmanager --list輸出可以安裝的包沦疾,我們找到build-tools;28.0.3和platforms;android-28,build-tools;28.0.3是編譯時(shí)對應(yīng)的編譯工具第队,platforms;android-28主要是系統(tǒng)的jar包哮塞,
    build

    platform
  3. 通過sdkmanager --install build-tools;28.0.3 platforms;android-28

4. 通過命令行工具下載仿真鏡像及模擬器

  1. 使用sdkmanager --list輸出可以安裝的包,我們找到emulator和system-images;android-28;google_apis_playstore;x86_64凳谦,emulator是模擬器忆畅,而system-images;android-28;google_apis_playstore;x86_64則是系統(tǒng)的鏡像文件,鏡像可以隨意尸执,只要是支持android-28的就可以
    emulator

    image
  2. 通過sdkmanager --install emulator system-images;android-28;google_apis_playstore;x86_64

5. 設(shè)置GRADLE_USER_HOME

這里我們?yōu)槭裁匆狦RADLE_USER_HOME家凯,其實(shí)這個(gè)就算不設(shè)置也是可以的沒有什么問題缓醋,因?yàn)闀?huì)默認(rèn)在用戶目錄下創(chuàng)建一個(gè).gradle文件夾由于存放gradle的各個(gè)版本,比如C:\Users\Administrator.gradle绊诲,但是這樣會(huì)有兩點(diǎn)不好送粱,1、切換用戶時(shí)需要重新下載更新掂之。2抗俄、時(shí)間長了,版本多了會(huì)占用c盤存儲(chǔ)世舰,所以我設(shè)置了環(huán)境變量GRADLE_USER_HOME橄镜,并賦值為E:\android\gradlepro,這樣就好了


gradle

最后sdk的目錄也完成了冯乘,如下


adir

三、vscode配置

1. 安裝Android for VS Code插件

  1. 點(diǎn)擊擴(kuò)展按鈕或者通過crtl+shift+x快捷鍵進(jìn)入插件搜索界面晒夹,輸入android回車搜索裆馒,一會(huì)就會(huì)出現(xiàn)如下圖所示界面,點(diǎn)擊邊上的安裝按鈕進(jìn)行安裝丐怯,安裝好后喷好,安裝按鈕會(huì)消失


    Android for VS Code
  2. 創(chuàng)建原生的app目錄架構(gòu),這個(gè)我們可以直接從一個(gè)原生的架構(gòu)修改读跷,這里為了演示方便直接從碼云clone了他的原生app下來git clone https://gitee.com/oschina/git-osc-android.git

2. 添加vscode任務(wù)梗搅,嵌入安卓命令行

  1. 通過快捷鍵F1,彈出下圖所示界面效览,選擇配置生成默認(rèn)任務(wù)无切,選擇創(chuàng)建task.json,再選擇other其他


    f1

    taskorg
  2. 編輯task.json為如下內(nèi)容丐枉,注意修改相關(guān)命令的路徑哆键,下面的模板是直接在原生APP的頂層目錄即gradle的腳本文件夾層
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "AppSignKey",
            "type": "shell",
            "command": "keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias",
            "windows": {
                // "command": "${workspaceRoot}\\shell.bat first"
                "command": "cd gitoscandroid; del my-release-key.jks; keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias"
                // keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
                // keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
            },
            "group": "test",
            "presentation": {
              "reveal": "always",
            //   "panel": "new"
            }
        },
        {
            "label": "CleanApp",
            "type": "shell",
            "command": "${workspaceRoot}/gradlew clean",
            "windows": {
                // "command": "${workspaceRoot}\\shell.bat first"
                "command": "${workspaceRoot}\\gradlew.bat clean "
            },
            "group": "test",
            "presentation": {
              "reveal": "always",
            //   "panel": "new"
            }
        },
        {
            "label": "BuildDebugApp",
            "type": "shell",
            "command": "${workspaceRoot}/gradlew assembleDebug ",
            "windows": {
                // "command": "${workspaceRoot}\\shell.bat first"
                "command": "${workspaceRoot}\\gradlew.bat assembleDebug "
            },
            "group": "test",
            "presentation": {
              "reveal": "always",
            //   "panel": "new"
            }
        },
        {
            "label": "InstallDebugApp",
            "type": "shell",
            "command": "${workspaceRoot}/gradlew installDebug ",
            "windows": {
                "command": "${workspaceRoot}\\gradlew.bat installDebug "
            },
            "group": "test",
            "presentation": {
              "reveal": "always",
            //   "panel": "new"
            }
        },
        {
            "label": "InstallReleaseApp",
            "type": "shell",
            "command": "${workspaceRoot}/gradlew installRelease ",
            "windows": {
                "command": "${workspaceRoot}\\gradlew.bat installRelease "
            },
            "group": "test",
            "presentation": {
              "reveal": "always",
            //   "panel": "new"
            }
        },
    ]
}
  1. 上面的task列表說明
AppSignKey 通過命令行生成簽名文件
CleanApp  通過命令行清除生成目錄
BuildDebugApp 通過命令行編譯調(diào)試APP
InstallDebugApp 通過命令行把調(diào)試APP安裝到手機(jī)或虛擬機(jī)
InstallReleaseApp 通過命令行安裝簽名后的發(fā)布APP
  1. 在vscode中測試我們創(chuàng)建的task任務(wù)是否正常,按F1并輸入task瘦锹,選擇“運(yùn)行測試任務(wù)”籍嘹,后面會(huì)彈出我們創(chuàng)建的任務(wù)列表,選擇其中的AppSignKey任務(wù)測試是否正常弯院,該任務(wù)會(huì)在項(xiàng)目根目錄下生成一個(gè)叫my-release-key.jks的秘鑰文件辱士,而其alias是 my-alias,這是在AppSignKey定死的听绳,小伙伴也可以自行修改相關(guān)的參數(shù)颂碘。這里要注意在生成秘鑰文件時(shí)需要輸入相關(guān)信息和密碼,我們這里需要把密碼記錄下來辫红,比如我這里把兩個(gè)密碼都設(shè)置為vencol123凭涂,后面生成簽名APP的時(shí)候需要用到
    task list
  2. 接著我們選擇BuildDebugApp任務(wù)祝辣,可能出現(xiàn)的問題
  1. 通過jcenter下載文件失敗,這里需要把jcenter()修改成
    maven { url 'https://maven.aliyun.com/repository/jcenter' }
    //maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
  2. local.properties文件找不到切油,這是因?yàn)榇a云用local.properties控制某些項(xiàng)目在本地而不提交到服務(wù)器蝙斜,這里我們只要新建一個(gè)local.properties文件,并輸入如下內(nèi)容
    RELEASE_STORE_FILE="my-release-key.jks"
    RELEASE_STORE_PASSWORD=vencol123
    RELEASE_KEY_ALIAS=my-alias
    RELEASE_KEY_PASSWORD=vencol123
  3. Keystore file "my-release-key.jks" not found for signing config 'release'.澎胡,修改app目錄下的build.gradle文件孕荠,把signingConfigs里面配置的storeFile file(propertyStoreFileStr)替換成storeFile file("my-release-key.jks")。my-release-key.jks這個(gè)和build.gradle在同一層目錄下

3. 添加任務(wù)快捷鍵

  1. 我們簽名已經(jīng)熟練使用了F1---》運(yùn)行task---》選擇我們建立的task的方式運(yùn)行任務(wù)了攻谁,這里我們介紹一種設(shè)置vscode快捷鍵的方式調(diào)用任務(wù)
  2. 我們按下F1稚伍,接著輸入key,接著彈出如下界面戚宦,我們在這里選擇open keyboard shortcuts(json)的選項(xiàng)个曙,接著彈出keybinding.json文件


    key
  3. 在keybinding.json文件中,添加如下內(nèi)容
    {
        "key": "F6",
        "command": "workbench.action.tasks.runTask",
        "args": "InstallReleaseApp"
    },
    {
        "key": "F7",
        "command": "workbench.action.tasks.runTask",
        "args": "BuildDebugApp"
    },
    {
        "key": "F8",
        "command": "workbench.action.tasks.runTask",
        "args": "CleanApp"
    },
    {
        "key": "F9",
        "command": "workbench.action.tasks.runTask",
        "args": "AppSignKey"
    },
  1. 添加的快捷鍵為F6到F9受楼,對應(yīng)關(guān)系如下
F6--->InstallReleaseApp垦搬,安裝發(fā)布版本的APP到手機(jī),需要先生成秘鑰
F7--->BuildDebugApp艳汽,編譯調(diào)試版本的APP
F6--->CleanApp猴贰,清除APP的編譯信息
F6--->AppSignKey,生成秘鑰

4. 添加vscode的調(diào)試選項(xiàng)河狐,利用安卓命令行任務(wù)

  1. 在安裝了Android for VS Code插件的前提下撑帖,通過運(yùn)行---》添加配置選項(xiàng)---》android著淆,彈出launch.json文件


    add config
  2. 修改launch.json文件湃累,修改相應(yīng)的目錄嘉栓,內(nèi)容如下所示,注意這里添加"preLaunchTask": "InstallDebugApp",意思是在執(zhí)行Android launch之前捐祠,先安裝app
{
    // 使用 IntelliSense 了解相關(guān)屬性非驮。 
    // 懸停以查看現(xiàn)有屬性的描述。
    // 欲了解更多信息雏赦,請?jiān)L問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "android",
            "request": "launch",
            "name": "Android launch",
            "appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
            "apkFile": "${workspaceRoot}/gitoscandroid/build/outputs/apk/debug/app-debug.apk",
            "adbPort": 5037,
        "preLaunchTask": "InstallDebugApp"
        },
        {
            "type": "android",
            "request": "attach",
            "name": "Android attach",
            "appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
            "adbPort": 5037,
            "processId": "${command:PickAndroidProcess}"
        }
    ]
}

5. 利用真機(jī)調(diào)試app

  1. 請確保已經(jīng)安裝了adb驅(qū)動(dòng)劫笙,以及手機(jī)已經(jīng)打開了adb調(diào)試功能。驅(qū)動(dòng)安裝正常星岗,設(shè)備管理器中會(huì)出現(xiàn)類似的設(shè)備信息填大,adb interface。如果沒有可以通過驅(qū)動(dòng)精靈等安裝俏橘,也可以下載https://adb.clockworkmod.com/的通用adb驅(qū)動(dòng)進(jìn)行安裝
    adb
  2. 分析AndroidManifest.xml可知允华,碼云APP的首頁是WelcomePage,這里我們找到WelcomePage的源碼,及在其啟動(dòng)的時(shí)候打上調(diào)試斷點(diǎn)靴寂,看下是否能斷點(diǎn)調(diào)試磷蜀,選擇Android launch,按下F5選擇進(jìn)行調(diào)試如下圖所示


    debug
  3. app已經(jīng)正常啟動(dòng)了百炬,但是為什么沒有進(jìn)入我們的調(diào)試斷點(diǎn)褐隆?這個(gè)經(jīng)查找發(fā)現(xiàn),碼云的大佬開發(fā)是直接把debug的配置配置成release配置的剖踊,也就是debug和release是一樣的沒有調(diào)試信息在app里面庶弃,因?yàn)闊o法在線調(diào)試,下面是其build.gradle的信息


    nodebug
  4. 可能出現(xiàn)問題德澈,是因?yàn)锳PP的目錄設(shè)置有問題歇攻,請具體修改
    Launch failed: APK read error. ENOENT: no such file or directory, open 'Gbuild\outputs\apk\debug\app-debug.apk'

6. 利用模擬器調(diào)試app

  1. 如果沒有虛擬鏡像,這里首先需要通過命令行創(chuàng)建一個(gè)鏡像
    avdmanager create avd -n base -k "system-images;android-28;google_apis_playstore;x86_64 -p "E:\android\avd" -c 1000M
參數(shù)-n梆造,表示的是創(chuàng)建后avd鏡像的名稱
參數(shù)-k缴守,表示的是用于創(chuàng)建的基礎(chǔ)鏡像,這個(gè)選擇我們之前下載的鏡像
參數(shù)-p镇辉,表示avd鏡像放置的目錄
參數(shù)-c斧散,表示的是創(chuàng)建avd鏡像系統(tǒng)的大小
  1. 創(chuàng)建好鏡像后,可以通過使用emulator的方式對鏡像進(jìn)行啟動(dòng)測試摊聋,其中avd參數(shù)后面輸入的是avd鏡像的名字,如無意外就可以正常啟動(dòng)模擬器了
    emulator -avd base
    avd
  2. 接著我們到vscode代碼目錄下栈暇,按下F5麻裁,如果沒有連接手機(jī)也沒有啟動(dòng)的模擬器,需要先啟動(dòng)模擬器


    emulator
  3. 可能出現(xiàn)問題'gitoscandroid:debug': Could not find build of variant which supports density 160 and an ABI in x86_64, x86源祈,是因?yàn)樵赽uild.gradle煎源,沒有配置對x86的支持,這里我們直接添加即可abiFilters 'armeabi-v7a','x86'

四香缺、擴(kuò)展知識

這里介紹下vscode還可以通過react-native混合開發(fā)原生的APP和移動(dòng)APP手销,對應(yīng)的android目錄下可以放置安卓原生的工程文件,但是要修改build.gradle文件支持react-native插件图张。但是有個(gè)奇怪的問題锋拖,在vscode里面通過react-native調(diào)試APP的時(shí)候,似乎必須要把mainactive設(shè)置為頂層界面才可以調(diào)試祸轮,具體可以參考網(wǎng)址https://blog.csdn.net/qq_27082837/article/details/57409212
https://www.zhangshengrong.com/p/On1vqPvxXy/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兽埃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子适袜,更是在濱河造成了極大的恐慌柄错,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異售貌,居然都是意外死亡给猾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門颂跨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敢伸,“玉大人,你說我怎么就攤上這事毫捣∠曜荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵蔓同,是天一觀的道長饶辙。 經(jīng)常有香客問我,道長斑粱,這世上最難降的妖魔是什么弃揽? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮则北,結(jié)果婚禮上矿微,老公的妹妹穿的比我還像新娘。我一直安慰自己尚揣,他們只是感情好涌矢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著快骗,像睡著了一般娜庇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上方篮,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天名秀,我揣著相機(jī)與錄音,去河邊找鬼藕溅。 笑死匕得,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巾表。 我是一名探鬼主播汁掠,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼集币!你這毒婦竟也來了调塌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惠猿,失蹤者是張志新(化名)和其女友劉穎羔砾,沒想到半個(gè)月后负间,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姜凄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年政溃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片态秧。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡董虱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出申鱼,到底是詐尸還是另有隱情愤诱,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布捐友,位于F島的核電站淫半,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匣砖。R本人自食惡果不足惜科吭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猴鲫。 院中可真熱鬧对人,春花似錦、人聲如沸拂共。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宜狐。三九已至势告,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肌厨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工豁陆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柑爸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓盒音,卻偏偏與公主長得像表鳍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子祥诽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345