事件背景:
前幾日在群裡看到關總說他的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

儲存退出,輸入以下指令使之立即生效
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;26.0.0"
5、配置platform tools
打開 /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 instal
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/[email protected]@appium-selendroid-driver/selendroid/download/selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar
自行到maven倉庫下載下傳 上傳到對應目錄下, 重命名為存放的檔案名即可
3、最後用appium -v試一下安裝好的版本
五、用戶端部署(以Java為例)
1、pom添加依賴
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>5.0.0-BETA9</version>
<scope>test</scope>
</dependency>
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();
}
}