モバイルデバイス管理プラットフォームのATX server2の練習を終了


1、需要の背景

  • モバイルデバイス(AndroidおよびIOS)リモートデバッグ、スクリーンショットが好きAPKのインストール、機能テスト、ビュー・ログ、を含むがこれらに限定されません。
  • モバイルデバイス管理、再起動、シャットダウン、ネットワーク管理。
  • アプリのUIテスト自動化を完了するために、デバイス管理プラットフォームと組み合わせます。
  • デバッグ例外許容遅延、許容可能な品質。

2、予備調査

それらのほとんどが自動化されたツールであり、ニーズが後にネットワーク上でのデータの表示を開始理解し、デバイス管理プラットフォームについてはほとんど導入されました。繰り返し検討、我々は業界の現在のモバイルエンドデバイスには、次のしていることが見つかりました:

2.1、クラウド・テスト・プラットフォーム

  • 長所:心の平和、モデルやより包括的なサービスを提供しています。
  • 短所:一部時間料金で、たくさんのお金を要しました。

2.2、オープンソースツール

STF

  • 長所:フリーでオープンソース
  • 短所:深刻なネットワーク遅延

ATXサーバー

これは、TesterHomeに見られる私は著者に感謝し、それは良い感じてみることにしました。:次のアドレスのgithubの
https://github.com/openatx/atxserver2

2.3、VNC

長年のためのアンドロイドVNCサーバーが原因の制限パイのは不可能に、アンドロイドの5.xを更新しない、再コンパイルする必要があるアンドリューは直接決定的エントリーレベルの選手をあきらめなかったとして、このプロセスは、少し複雑です。

2.4、企業のクラウド・テスト・プラットフォーム内の自己啓発

こうした米国のグループの本当のクラウド・プラットフォームとしてのコメントは、一般的にR&D、大規模なコストでチームを置いているほとんどのクラウド・テスト・プラットフォームを、知っています。

3、ATX Serverのインストール

私はUbuntu18、Windowsプラットフォームは、ソースコードのインストールを使用することが推奨されているマシンを使用しています。

環境に依存

  • python3
  • rethinkdb

インストールrethinkdb

公式インストールマニュアルアドレスします。https://www.rethinkdb.com/docs/install/。対応プラットフォームのインストール方法を選択します。インストールUbuntuの公式は次のようになります:

source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list
wget -qO- https://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -
sudo apt-get update

sudo apt-get install rethinkdb

rethinkdbを見つけることができず、一部のユーザーは、HTTP、HTTPSに変更を言って、再インストールしすぎ修正。情報へのアクセスを通じ、rethinkdbはubuntu18をサポートしているのでインストールdebパッケージを使用しようとしません。第四の最後をダウンロードしてください。

ダウンロードします。https://github.com/srh/rethinkdb/releases/tag/v2.3.6.srh.1

インストール:

Run sudo dpkg -i foo.deb to install a deb package.

If you get a message about missing some dependencies, run sudo apt-get install -f to install them.

Then run rethinkdb --version to test that installation succeeded.

ATXサーバーのインストール

ローカルにクローンコード

git clone https://github.com/openatx/atxserver2.git

インストールカールツール

sudo apt install curl 

インストールのドッキングウィンドウ、コン

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

現在のユーザー・グループのドッキングウィンドウの場合

sudo gpasswd -a ${USER} docker

編集は、/ etc / default /ドッキングウィンドウのファイルは
、以下の設定を追加します

DOCKER_OPTS="-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock"

機械のドッキングウィンドウを再起動または再起動します

service  docker restart

ディレクトリコードドッキングウィンドウ-compose.yml、実行に変更するには、コマンドラインを終了します

docker-compose up

次のようにスタートログは次のとおりです。

stephen@stephen-K55VD:~/atx-server/atxserver2$ docker-compose up
Creating network "atxserver2_default" with the default driver
Pulling rethinkdb (rethinkdb:2.3.6)...
2.3.6: Pulling from library/rethinkdb
9811207f4eba: Pull complete
d7c48489ee79: Pull complete
bd3fe89ae346: Pull complete
1914a1a7f89d: Pull complete
bf26223d4854: Pull complete
Digest: sha256:37340d5fcc7b0e83eed0e699a6af5362a3d8ff19cf3f80819dcf75d6c5ebcc18
Status: Downloaded newer image for rethinkdb:2.3.6
Building web
Step 1/6 : FROM python:3.6
3.6: Pulling from library/python
6f2f362378c5: Pull complete
494c27a8a6b8: Pull complete
7596bb83081b: Pull complete
372744b62d49: Pull complete
615db220d76c: Pull complete
1865698adfb0: Pull complete
7159b3304cc0: Pull complete
ad0713808ef6: Pull complete
7ba593904573: Pull complete
Digest: sha256:904bc648c46a22d0bca62340785da841eaeb7099addb2fc4941a5a8b878c5ce7
Status: Downloaded newer image for python:3.6
 ---> 48c06762acf0
Step 2/6 : ADD . /app
 ---> abff59a2fca3
Step 3/6 : WORKDIR /app
 ---> Running in cc16e0af3f06
Removing intermediate container cc16e0af3f06
 ---> 61b746c8516d
Step 4/6 : RUN pip install -r requirements.txt
 ---> Running in 8faf64de476a
Collecting six (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
Collecting bunch (from -r requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/ef/bf/a4cf1779a4ffb4f610903fa08e15d1f4a8a2f4e3353a02afbe097c5bf4a8/bunch-1.0.1.tar.gz
Collecting logzero (from -r requirements.txt (line 3))
  Downloading https://files.pythonhosted.org/packages/97/24/27295d318ea8976b12cf9cc51d82e7c7129220f6a3cc9e3443df3be8afdb/logzero-1.5.0-py2.py3-none-any.whl
Collecting tornado>=5.0 (from -r requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/03/3f/5f89d99fca3c0100c8cede4f53f660b126d39e0d6a1e943e95cc3ed386fb/tornado-6.0.2.tar.gz (481kB)
Collecting requests (from -r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
Collecting apkutils-patch<=0.6.0,>=0.5.4 (from -r requirements.txt (line 6))
  Downloading https://files.pythonhosted.org/packages/d0/e3/fd4d547044b9fcf0af7eca25c055dc1169aadc47a3677eb5951426c9a66a/apkutils-patch-0.5.4.tar.gz (60kB)
Collecting rethinkdb==2.4.2.post1 (from -r requirements.txt (line 7))
  Downloading https://files.pythonhosted.org/packages/98/4b/b22065b2686f440f8eaa8a7326e96a442ce98b7b637d28529958b83b2128/rethinkdb-2.4.2.post1-py2.py3-none-any.whl (155kB)
Collecting certifi>=2017.4.17 (from requests->-r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests->-r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)
Collecting idna<2.9,>=2.5 (from requests->-r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests->-r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting pyelftools (from apkutils-patch<=0.6.0,>=0.5.4->-r requirements.txt (line 6))
  Downloading https://files.pythonhosted.org/packages/fa/9a/0674cb1725196568bdbca98304f2efb17368b57af1a4bb3fc772c026f474/pyelftools-0.25.tar.gz (499kB)
Collecting cigam (from apkutils-patch<=0.6.0,>=0.5.4->-r requirements.txt (line 6))
  Downloading https://files.pythonhosted.org/packages/3c/d0/19ff49c1938aea4e0076ee084ca23845408cffb51582b2be975f926533b5/cigam-0.0.3-py3-none-any.whl
Collecting xmltodict (from apkutils-patch<=0.6.0,>=0.5.4->-r requirements.txt (line 6))
  Downloading https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl
Building wheels for collected packages: bunch, tornado, apkutils-patch, pyelftools
  Building wheel for bunch (setup.py): started
  Building wheel for bunch (setup.py): finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/56/0f/19/fbbf81e5764e6d8b74501c4357a88c14c94466ec777c03734c
  Building wheel for tornado (setup.py): started
  Building wheel for tornado (setup.py): finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/61/7e/7a/5e02e60dc329aef32ecf70e0425319ee7e2198c3a7cf98b4a2
  Building wheel for apkutils-patch (setup.py): started
  Building wheel for apkutils-patch (setup.py): finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/43/70/ff/194b6150b109c3143bf17d8821a21cb7060de738038b920c64
  Building wheel for pyelftools (setup.py): started
  Building wheel for pyelftools (setup.py): finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/55/2f/15/4ce6885a52f475de68c16f3116a94d2156d588390cdb6c507c
Successfully built bunch tornado apkutils-patch pyelftools
Installing collected packages: six, bunch, logzero, tornado, certifi, urllib3, idna, chardet, requests, pyelftools, cigam, xmltodict, apkutils-patch, rethinkdb
Successfully installed apkutils-patch-0.5.4 bunch-1.0.1 certifi-2019.3.9 chardet-3.0.4 cigam-0.0.3 idna-2.8 logzero-1.5.0 pyelftools-0.25 requests-2.22.0 rethinkdb-2.4.2.post1 six-1.12.0 tornado-6.0.2 urllib3-1.25.3 xmltodict-0.12.0
Removing intermediate container 8faf64de476a
 ---> 1fa1eb974541
Step 5/6 : ENTRYPOINT [ "scripts/wait-for-db.sh" ]
 ---> Running in 38527f1e1551
Removing intermediate container 38527f1e1551
 ---> b107d738e458
Step 6/6 : CMD ["python", "main.py"]
 ---> Running in 2c4b41cc5b10
Removing intermediate container 2c4b41cc5b10
 ---> 41a3cc6d72f4
Successfully built 41a3cc6d72f4
Successfully tagged atxserver2_web:latest
WARNING: Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating atxserver2_rethinkdb_1 ... done
Creating atxserver2_web_1       ... done
Attaching to atxserver2_rethinkdb_1, atxserver2_web_1
rethinkdb_1  | Recursively removing directory /data/rethinkdb_data/tmp
rethinkdb_1  | Initializing directory /data/rethinkdb_data
rethinkdb_1  | Running rethinkdb 2.3.6~0jessie (GCC 4.9.2)...
rethinkdb_1  | Running on Linux 4.15.0-34-generic x86_64
rethinkdb_1  | Loading data from directory /data/rethinkdb_data
rethinkdb_1  | Listening for intracluster connections on port 29015
rethinkdb_1  | Listening for client driver connections on port 28015
rethinkdb_1  | Listening for administrative HTTP connections on port 8080
rethinkdb_1  | Listening on cluster addresses: 127.0.0.1, 172.18.0.2
rethinkdb_1  | Listening on driver addresses: 127.0.0.1, 172.18.0.2
rethinkdb_1  | Listening on http addresses: 127.0.0.1, 172.18.0.2
rethinkdb_1  | Server ready, "32b5db1e779c_vxj" d1530d1a-a1e6-4c91-ba9a-09343c76dd16
web_1        | RethinkDB is running
web_1        | [I 190616 05:21:21 main:70] listen on port http://172.18.0.3:4000
web_1        | [I 190616 05:21:50 web:2246] 302 GET / (172.18.0.1) 1.69ms
web_1        | [I 190616 05:21:50 web:2246] 200 GET /login?next=%2F (172.18.0.1) 3.17ms
web_1        | [I 190616 05:21:50 web:2246] 200 GET /favicon.ico (172.18.0.1) 34.69ms
web_1        | [I 190616 05:22:00 web:2246] 302 POST /login (172.18.0.1) 307.36ms
web_1        | [I 190616 05:22:00 web:2246] 302 GET / (172.18.0.1) 9.53ms
web_1        | [I 190616 05:22:00 web:2246] 200 GET /devices (172.18.0.1) 18.83ms
web_1        | [I 190616 05:22:00 web:2246] 200 GET /static/vendor/fontawesome-5.7.2/css/all.css (172.18.0.1) 1.48ms

ます。http:ブラウザのアドレスバーに//172.18.0.3:4000 /デバイス、特定のアドレス、起動ログを参照して、ページは次のように:

これまでのところ、説明ATXは、展開を成功さを切断、少し長い忍耐のミラーを引っ張り、そしてその次のステップは、atxserver2-アンドロイド・プロバイダーを展開することです。

図4に示すように、アクセス装置アンドリュース

Vimのbashrcに、環境変数を追加します

SERVER_URL="http://172.18.0.3:4000" # 这个修改成自己的atxserver2地址
IMAGE="codeskyblue/atxserver2-android-provider"

それを動作させるために、ソースの.bashrcを保存した後。次に、コマンドを実行します。

docker pull $IMAGE

インストールの枕

pip3 install pillow

インストールwediter

pip3 install -U weditor

ADBツールをインストールします

apt-get install android-tools-adb

マシンのインストールuiautomator2

pip install  --pre --upgrade uiautomator2

開発者モードを開いて、お使いの携帯電話をUSBケーブルで接続します。現在のマシンぶら下げ機器を見ます

stephen@stephen-K55VD:~$ adb  devices
List of devices attached
9fb1c6ae    device

初期設定(オプションステップ)

python3.6 -m uiautomator2 init

最後に、このコマンドを実行し、ミラーが必要なすべてのリソース(ATX-uiautomator.apk、minicap、minitouch、ATX-エージェント)すべてのあなたの携帯電話にプッシュを配置します。インストールを確認する必要があります。

docker run --rm --privileged -v /dev/bus/usb:/dev/bus/usb --net host \
    ${IMAGE} python main.py --server ${SERVER_URL}

結果のウェブ側の外観を開くために、すべてのプッシュエキサイティングな時間の完了を待った後。電話をクリックして、すぐに操作することができます。

5、ドッカーポートフォワーディング

今、成功の展開は、他のマシンからWebページにアクセスしようとするまで、それは不可能除外した後、最初にファイアウォールの問題が疑わ、開くことがわかりました。原因がアクセスできない:ドッキングウィンドウは、ポートを設定する必要があります。
コンテナ情報を表示します:

stephen@stephen-K55VD:~$ docker ps
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS              PORTS                            NAMES
b0bae8e68a86        codeskyblue/atxserver2-android-provider   "python main.py --se…"   12 minutes ago      Up 12 minutes                                        affectionate_ardinghelli
7c5284cbdb9e        atxserver2_web                            "scripts/wait-for-db…"   5 hours ago         Up 4 hours          0.0.0.0:4000->4000/tcp           atxserver2_web_1
32b5db1e779c        rethinkdb:2.3.6                           "rethinkdb --bind all"   5 hours ago         Up 4 hours          8080/tcp, 28015/tcp, 29015/tcp   atxserver2_rethinkdb_1

ビューコンテナ住所:

docker inspect "web服务所在的容器id"| grep IPAddress

stephen@stephen-K55VD:~/atx-server/atxserver2$ docker inspect 7c5284cbdb9e| grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.18.0.3",

ポート転送を設定します

iptables -t nat -A  DOCKER -p tcp --dport 4001 -j DNAT --to-destination 172.18.0.3:4000

そして、アドレス使用します。http://ネイティブ住所:4001を、ifconfigコマンドでローカルアドレスを参照してください、あなたは他のマシンからアクセスすることができます。

5.まとめ

非常棒的一款工具,开源,简洁易用,期待更多新特性,不足之处是画质有点模糊,接下来实践一下IOS设备如何接入和是否能和appium集成。

おすすめ

転載: www.cnblogs.com/webDepOfQWS/p/11031830.html