zoukankan      html  css  js  c++  java
  • 基于centOs7下appium环境搭建

    事件背景:

    前几日在群里看到关总说他的server端是搭建在linux环境下,包括对客户端与服务端的交互处理,感觉整体思路清晰可鉴,于是就想尝试,动手实践,接着从环境搭建开始搞起,于是就有了这篇文章,不得不吐槽下,这是段很深刻的回忆呀,历时1.5工作日,终于搞定环境搭建!!

    依赖关联:

    ps:以我现在的为例,个别根据自己情况调整

    • JDK 1.8
    • Android SDK 1.0.40
    • nodejs 8.7
    • appium 1.9.1

    一、安装jdk:

    参考我之前写过的《ubuntu12.04 安装配置jdk1.7》

    二、安装Android SDK:

    1、下载sdk

    cd /opt  
    mkdir androidSdk  
    wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip   
    unzip sdk-tools-linux-3859397.zip 

    2、配置环境变量

    sudo vim /etc/profile
    #set sdk enviroment
    export ANDROID_HOME=/opt/androidSdk
    export PATH=$PATH:$ANDROID_HOME/tools/bin

    保存退出,输入以下命令使之立即生效

    source /etc/profile

    3、查看已安装信息

    复制代码
    sdkmanager --list
    
    Installed packages:
     Path        | Version | Description          | Location      
     -------      | ------- | -------            | -------      
     tools       | 26.0.1 | Android SDK Tools 26.0.1    | tools/
    
    Available Packages:
     Path               | Version   | Description           
     -------              | -------   | -------             
     add-ons;addon-g..._apis-google-15 | 3      | Google APIs           
     add-ons;addon-g..._apis-google-16 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-17 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-18 | 4      | Google APIs           
     add-ons;addon-g..._apis-google-19 | 20      | Google APIs           
     add-ons;addon-g..._apis-google-21 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-22 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-23 | 1      | Google APIs           
     add-ons;addon-g..._apis-google-24 | 1      | Google APIs           
     add-ons;addon-g...e_gdk-google-19 | 11      | Glass Development Kit Preview  
     build-tools;19.1.0        | 19.1.0    | Android SDK Build-Tools 19.1   
     build-tools;20.0.0        | 20.0.0    | Android SDK Build-Tools 20    
     build-tools;21.1.2        | 21.1.2    | Android SDK Build-Tools 21.1.2  
     build-tools;22.0.1        | 22.0.1    | Android SDK Build-Tools 22.0.1  
     build-tools;23.0.1        | 23.0.1    | Android SDK Build-Tools 23.0.1  
     build-tools;23.0.2        | 23.0.2    | Android SDK Build-Tools 23.0.2  
     build-tools;23.0.3        | 23.0.3    | Android SDK Build-Tools 23.0.3  
     build-tools;24.0.0        | 24.0.0    | Android SDK Build-Tools 24    
     build-tools;24.0.1        | 24.0.1    | Android SDK Build-Tools 24.0.1  
     build-tools;24.0.2        | 24.0.2    | Android SDK Build-Tools 24.0.2  
     build-tools;24.0.3        | 24.0.3    | Android SDK Build-Tools 24.0.3  
     build-tools;25.0.0        | 25.0.0    | Android SDK Build-Tools 25    
     build-tools;25.0.1        | 25.0.1    | Android SDK Build-Tools 25.0.1  
     build-tools;25.0.2        | 25.0.2    | Android SDK Build-Tools 25.0.2  
     build-tools;25.0.3        | 25.0.3    | Android SDK Build-Tools 25.0.3  
     build-tools;26.0.0        | 26.0.0    | Android SDK Build-Tools 26    
     cmake;3.6.4111459         | 3.6.4111459 | CMake 3.6.4111459        
     docs               | 1      | Documentation for Android SDK  
     emulator             | 26.1.2    | Android Emulator         
     extras;android;gapid;1      | 1.0.3    | GPU Debugging tools       
     extras;android;gapid;3      | 3.1.0    | GPU Debugging tools       
     extras;android;m2repository    | 47.0.0    | Android Support Repository    
     extras;google;auto        | 1.1     | Android Auto Desktop Head Unit...
     extras;google;g...e_play_services | 42      | Google Play services       
     extras;google;instantapps     | 1.0.0    | Instant Apps Development SDK   
     extras;google;m2repository    | 55      | Google Repository        
     extras;google;m...t_apk_expansion | 1      | Google Play APK Expansion library
     extras;google;market_licensing  | 1      | Google Play Licensing Library  
     extras;google;play_billing    | 5      | Google Play Billing Library   
     extras;google;simulators     | 1      | Android Auto API Simulators   
     extras;google;webdriver      | 2      | Google Web Driver        
     extras;m2reposi...ut-solver;1.0.0 | 1      | Solver for ConstraintLayout 1.0.0
     extras;m2reposi...er;1.0.0-alpha2 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha3 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha4 | 1      | com.android.support.constraint...
     extras;m2reposi...er;1.0.0-alpha5 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha6 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha7 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha8 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...er;1.0.0-alpha9 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta1 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta2 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta3 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta4 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ver;1.0.0-beta5 | 1      | Solver for ConstraintLayout 1....
     extras;m2reposi...ut-solver;1.0.1 | 1      | Solver for ConstraintLayout 1.0.1
     extras;m2reposi...ut-solver;1.0.2 | 1      | Solver for ConstraintLayout 1.0.2
     extras;m2reposi...nt-layout;1.0.0 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha2 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha3 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha4 | 1      | com.android.support.constraint...
     extras;m2reposi...ut;1.0.0-alpha5 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha6 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha7 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha8 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...ut;1.0.0-alpha9 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta1 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta2 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta3 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta4 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...out;1.0.0-beta5 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...nt-layout;1.0.1 | 1      | ConstraintLayout for Android 1...
     extras;m2reposi...nt-layout;1.0.2 | 1      | ConstraintLayout for Android 1...
     lldb;2.0             | 2.0.2558144 | LLDB 2.0             
     lldb;2.1             | 2.1.2852477 | LLDB 2.1             
     lldb;2.2             | 2.2.3271982 | LLDB 2.2             
     lldb;2.3             | 2.3.3614996 | LLDB 2.3             
     ndk-bundle            | 15.1.4119039 | NDK               
     patcher;v4            | 1      | SDK Patch Applier v4       
     platform-tools          | 26.0.0    | Android SDK Platform-Tools    
     platforms;android-10       | 2      | Android SDK Platform 10     
     platforms;android-11       | 2      | Android SDK Platform 11     
     platforms;android-12       | 3      | Android SDK Platform 12     
     platforms;android-13       | 1      | Android SDK Platform 13     
     platforms;android-14       | 4      | Android SDK Platform 14     
     platforms;android-15       | 5      | Android SDK Platform 15     
     platforms;android-16       | 5      | Android SDK Platform 16     
     platforms;android-17       | 3      | Android SDK Platform 17     
     platforms;android-18       | 3      | Android SDK Platform 18     
     platforms;android-19       | 4      | Android SDK Platform 19     
     platforms;android-20       | 2      | Android SDK Platform 20     
     platforms;android-21       | 2      | Android SDK Platform 21     
     platforms;android-22       | 2      | Android SDK Platform 22     
     platforms;android-23       | 3      | Android SDK Platform 23     
     platforms;android-24       | 2      | Android SDK Platform 24     
     platforms;android-25       | 3      | Android SDK Platform 25     
     platforms;android-26       | 1      | Android SDK Platform 26     
     platforms;android-7        | 3      | Android SDK Platform 7      
     platforms;android-8        | 3      | Android SDK Platform 8      
     platforms;android-9        | 2      | Android SDK Platform 9      
     sources;android-15        | 2      | Sources for Android 15      
     sources;android-16        | 2      | Sources for Android 16      
     sources;android-17        | 1      | Sources for Android 17      
     sources;android-18        | 1      | Sources for Android 18      
     sources;android-19        | 2      | Sources for Android 19      
     sources;android-20        | 1      | Sources for Android 20      
     sources;android-21        | 1      | Sources for Android 21      
     sources;android-22        | 1      | Sources for Android 22      
     sources;android-23        | 1      | Sources for Android 23      
     sources;android-24        | 1      | Sources for Android 24      
     sources;android-25        | 1      | Sources for Android 25      
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-10;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 2      | ARM EABI v7a System Image    
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...15;default;mips | 1      | MIPS System Image        
     system-images;a...-15;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...16;default;mips | 1      | MIPS System Image        
     system-images;a...-16;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 5      | ARM EABI v7a System Image    
     system-images;a...17;default;mips | 1      | MIPS System Image        
     system-images;a...-17;default;x86 | 3      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-18;default;x86 | 3      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 5      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 5      | Google APIs Intel x86 Atom Sys...
     system-images;a...ult;armeabi-v7a | 5      | ARM EABI v7a System Image    
     system-images;a...-19;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...pis;armeabi-v7a | 28      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 28      | Google APIs Intel x86 Atom Sys...
     system-images;a...-tv;armeabi-v7a | 3      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ult;armeabi-v7a | 4      | ARM EABI v7a System Image    
     system-images;a...-21;default;x86 | 4      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 4      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 20      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 20      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 20      | Google APIs Intel x86 Atom_64 ...
     system-images;a...-tv;armeabi-v7a | 1      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ult;armeabi-v7a | 2      | ARM EABI v7a System Image    
     system-images;a...-22;default;x86 | 5      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 5      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 14      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 14      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 14      | Google APIs Intel x86 Atom_64 ...
     system-images;a...-tv;armeabi-v7a | 10      | Android TV ARM EABI v7a System...
     system-images;a...;android-tv;x86 | 10      | Android TV Intel x86 Atom Syst...
     system-images;a...ear;armeabi-v7a | 6      | Android Wear ARM EABI v7a Syst...
     system-images;a...ndroid-wear;x86 | 6      | Android Wear Intel x86 Atom Sy...
     system-images;a...-23;default;x86 | 9      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 9      | Intel x86 Atom_64 System Image  
     system-images;a...pis;armeabi-v7a | 21      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 21      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 21      | Google APIs Intel x86 Atom_64 ...
     system-images;a...;android-tv;x86 | 11      | Android TV Intel x86 Atom Syst...
     system-images;a...fault;arm64-v8a | 7      | ARM 64 v8a System Image     
     system-images;a...ult;armeabi-v7a | 7      | ARM EABI v7a System Image    
     system-images;a...-24;default;x86 | 7      | Intel x86 Atom System Image   
     system-images;a...;default;x86_64 | 7      | Intel x86 Atom_64 System Image  
     system-images;a..._apis;arm64-v8a | 14      | Google APIs ARM 64 v8a System ...
     system-images;a...pis;armeabi-v7a | 14      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 14      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 14      | Google APIs Intel x86 Atom_64 ...
     system-images;a...s_playstore;x86 | 13      | Google Play Intel x86 Atom Sys...
     system-images;a...;android-tv;x86 | 5      | Android TV Intel x86 Atom Syst...
     system-images;a...ear;armeabi-v7a | 3      | Android Wear ARM EABI v7a Syst...
     system-images;a...ndroid-wear;x86 | 3      | Android Wear Intel x86 Atom Sy...
     system-images;a..._apis;arm64-v8a | 6      | Google APIs ARM 64 v8a System ...
     system-images;a...pis;armeabi-v7a | 6      | Google APIs ARM EABI v7a Syste...
     system-images;a...google_apis;x86 | 6      | Google APIs Intel x86 Atom Sys...
     system-images;a...gle_apis;x86_64 | 6      | Google APIs Intel x86 Atom_64 ...
     system-images;a...;android-tv;x86 | 3      | Android TV Intel x86 Atom Syst...
     system-images;a...ndroid-wear;x86 | 1      | Android Wear Intel x86 Atom Sy...
     system-images;a...google_apis;x86 | 4      | Google APIs Intel x86 Atom Sys...
     system-images;a...s_playstore;x86 | 4      | Google Play Intel x86 Atom Sys...
     tools               | 26.0.2    | Android SDK Tools        
    
    Available Updates:
     ID   | Installed | Available
     ------- | -------  | ------- 
     tools  | 26.0.1  | 26.0.2
    复制代码

    4、安装需要的package,执行以下命令

    sdkmanager "build-tools;19.1.0"
    sdkmanager "build-tools;20.0.0"
    sdkmanager "build-tools;21.1.2"
    sdkmanager "build-tools;22.0.1"
    sdkmanager "build-tools;23.0.1"
    sdkmanager "build-tools;23.0.3"
    sdkmanager "build-tools;24.0.0"
    sdkmanager "build-tools;24.0.1"
    sdkmanager "build-tools;24.0.2"
    sdkmanager "build-tools;24.0.3"
    sdkmanager "build-tools;25.0.0"
    sdkmanager "build-tools;25.0.1"
    sdkmanager "build-tools;25.0.2"
    sdkmanager "build-tools;25.0.3"
    sdkmanager "build-tools;26.0.0"
    sdkmanager "build-tools;26.0.1"
    sdkmanager "build-tools;26.0.2"
    sdkmanager "build-tools;26.0.3"

    sdkmanager "build-tools;27.0.0"
    sdkmanager "build-tools;27.0.1"
    sdkmanager "build-tools;27.0.2"
    sdkmanager "build-tools;27.0.3"

    sdkmanager "build-tools;28.0.0"
    sdkmanager "build-tools;28.0.1"
    sdkmanager "build-tools;28.0.2"
    sdkmanager "build-tools;28.0.3"

    sdkmanager "platform-tools"
    sdkmanager "platforms;android-10"
    sdkmanager "platforms;android-11"
    sdkmanager "platforms;android-12"
    sdkmanager "platforms;android-13"
    sdkmanager "platforms;android-14"
    sdkmanager "platforms;android-15"
    sdkmanager "platforms;android-16"
    sdkmanager "platforms;android-17"
    sdkmanager "platforms;android-18"
    sdkmanager "platforms;android-19"

    sdkmanager "platforms;android-20"
    sdkmanager "platforms;android-21"
    sdkmanager "platforms;android-22"
    sdkmanager "platforms;android-23"
    sdkmanager "platforms;android-24"
    sdkmanager "platforms;android-25"
    sdkmanager "platforms;android-26"
    sdkmanager "platforms;android-27"
    sdkmanager "platforms;android-28"

     

    可以先执行1行命令看一下是不是能正常运行

    我执行了1个命令,出现了一个警告:Warning: File /root/.android/repositories.cfg could not be loaded. 

    说是是在目录 /root/.android/ 下没有找到文件repositories.cfg

    解决办法:

    使用touch命令在根目录下新建1一个repositories.cfg文件就可以了

    touch ~/.android/repositories.cfg

    然后执行sdkmanager xxxx就没问题了。

    执行完的效果:

    在android-home目录下多了4个文件夹

    5、配置platform tools

    打开 /etc/profile 添加环境变量

    执行以下命令,使配置文件生效
    source /etc/profile

    验证配置结

    三、安装nodejs:

    安装版本:8.7.0

    1、从源码下载Nodejs

    cd /usr/local/src
    wget https://npm.taobao.org/mirrors/node/v8.7.0/node-v8.7.0.tar.gz

    2、解压缩 nodejs 安装包

    tar xvf node-v8.7.0.tar.gz

    3、进入解压的node文件夹,安装必要的编译软件包

    cd node-v8.7.0
    ./configure

    如提示gcc too old (英文那一大串我忘记了),大概意思让你升级ggc到4.90以上版本,因为nodejs8.7.0编译时gcc版本要求在4.9.4+。

    升级gcc参考我另一篇Centos7升级gcc版本方法之一使用scl软件集

    再次执行

    ./configure
    make

    注:make过程较为耗时,可能需要30分钟以上

    4、安装Nodejs

    sudo make install

    5、验证是否正确安装

    node -v

    四、安装appium:

    方法一:

    1、源码安装:

    git clone https://github.com/appium/appium.git

    2、进入appium源码文件夹,使用cnpm install安装依赖

    cnpm install

    如在安装期间执行到这卡住了,一直不走,

    Downloading Selendroid standalone server version 0.17.0 from http://repo1.maven.org/maven2/io/selendroid/selendroid-standalone/0.17.0/selendroid-standalone-0.17.0-with-dependencies.jar --> /usr/local/lib/node_modules/appium/node_modules/_appium-selendroid-driver@1.6.4@appium-selendroid-driver/selendroid/download/selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar

    自行到maven仓库下载 上传到对应目录下, 重命名为存放的文件名即可

    3、最后用appium -v试一下安装好的版本

     方法二:

    1. 安装 cnpm

    官网说用npm安装appium,我试了很久都不成功。因此先安装 cnpm, 再用 cnpm 安装appium等。

    npm 与 cnpm 的关系,详见博客 https://blog.csdn.net/shelly1072/article/details/51524029

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    2. 安装 appium/appium-doctor

    cnpm install -g appium

    cnpm install -g appium-doctor

    目前发现版本1.9.0有问题,可安装1.8.1:

    cnpm install -g appium@1.8.1

    设置 appium/appium-doctor 的软连接方式,方式同 1-2

    3. 启动 appium

    终端输入:appium 即可

    4. 启动 appium-doctor

    终端输入:appium 即可

    appium-doctor 检查环境是否满足要求

    五、appium desktop 安装:

    官网上下载对应版本  https://github.com/appium/appium-desktop/releases

    linux 下载 appium-desktop-1.8.2-x86_64.AppImage

    设置 appium/appium-doctor 的软连接方式,方式同 1-2 (或者export 文件对应的路径,alias 等)

    终端输入 appium-desktop 启动 appium,start server

    点击此处可启动 appium inspector,可支持 IOS/Android 定位元素

     

    六、客户端部署(以Java为例)

    1、pom添加依赖

    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>5.0.0-BETA9</version>
        <scope>test</scope>
    </dependency>

    2、代码实例

    package com.demo.test;
    
    import io.appium.java_client.android.AndroidDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    import java.net.URL;
    
    /***
     * @author longrong.lang
     * appium demo
     */
    public class CalculatorTest {
    
        public static void main(String[] args) throws Exception {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("deviceName", "GALAXY S7");//deviceID
            capabilities.setCapability("automationName", "Appium");
            capabilities.setCapability("platformName", "Android");//操作系统
            capabilities.setCapability("platformVersion", "8.0.0");//系统版本
            capabilities.setCapability("appPackage", "cn.pear.browser");//应用包名
            capabilities.setCapability("appActivity", "cn.pear.browser.activities.WelcomeActivity");//启动页面
            AndroidDriver driver = new AndroidDriver(new URL("http://172.25.40.208:4723/wd/hub"), capabilities);//appium服务端连接
            Thread.sleep(200000);
            driver.quit();
        }
    
    }
  • 相关阅读:
    HEOI2018——welcome to NOI2018
    【HEOI 2018】Day2 T2 林克卡特树
    【康托展开】
    【省选模拟测试3】
    【BZOJ 2850】巧克力王国
    【BZOJ 3569】 DZY Loves Chinese II
    【BZOJ 4652】【NOI 2016】循环之美
    【BZOJ 3534】: [Sdoi2014]重建
    mysql 的研究
    mysql 的研究
  • 原文地址:https://www.cnblogs.com/wsy0202/p/12098598.html
Copyright © 2011-2022 走看看