App 自動化測試(四)ReDroid 容器安裝 Google Play 套件、App下載安裝

更新於 2023/05/24閱讀時間約 14 分鐘

前言

前幾篇聊到作業系統、Docker 跟 Android 容器的準備,再來就是替 Android 容器開啟 Google Play 套件並安裝待測 App 供後續手動或者自動測試使用。

Google Play 套件處理

標準的 ReDroid 容器是沒有包含Google Play 套件的需要另外安裝,以下也是按照教學文操作,有點出入,不過大致符合。

下載並準備 Google Play 套件

OpenGapps下載 GApps,這邊選擇 x86_64架構的 Android 11 最小化的pico 版本,會得到一包 ZIP 壓縮檔,裡面包含許多小的子套件,如果沒有裝過 lzip,可以用以下指令裝一下
sudo apt install lunzip
直接下載的指令
$ wget https://master.dl.sourceforge.net/project/opengapps/x86_64/20220503/open_gapps-x86_64-11.0-pico-20220503.zip
$ unzip open_gapps-x86_64-11.0-pico-20220503.zip -d gapps
檢視解壓縮的檔案可以看到這樣的目錄結構
$ tree gapps/ -d
gapps/
├── Core
├── GApps
├── META-INF
│   └── com
│       └── google
│           └── android
└── Optional
再來是最繁瑣的一個步驟,要重建 System 結構。
首先將 Core / GApps 內的所有 tar.lz 解壓縮到另外一個目錄去,如果對於解壓LZ不熟,可以看這篇
$ cd gapp
$ mkdir unizipped
$ cd unizipped/
$ rm setupwizardtablet-x86_64 -fr
$ cat ../Core/*.lz | tar --lzip -xvf - -i
$ cat ../GApps/*.lz | tar --lzip -xvf - -i
再來建立要上傳設備的 System 目錄,然後把解開的檔案一一放回去,這邊不是直接放回去就好,要做一點處理,把 common 或者 nodpi 前的路徑去掉。特別要注意的就是 setupwizard 用 default 就好。
scott@osboxes:~/Downloads/gapps/unzipped$ find . -name common | xargs cp -t system -r
scott@osboxes:~/Downloads/gapps/unzipped$ cp system/common/common/* system/common/. -r
scott@osboxes:~/Downloads/gapps/unzipped$ rm system/common/common -fr
scott@osboxes:~/Downloads/gapps/unzipped$ find . -name nodpi | xargs cp -t system -r
scott@osboxes:~/Downloads/gapps/unzipped$ cp system/common/* system/. -r
scott@osboxes:~/Downloads/gapps/unzipped$ cp system/nodpi/* system/. -r
scott@osboxes:~/Downloads/gapps/unzipped$ rm system/nodpi -fr
scott@osboxes:~/Downloads/gapps/unzipped$ rm system/common -fr
先看期望結果
scott@osboxes:~/Downloads/gapps/unzipped$ tree system/
system/
├── app
│   ├── GoogleCalendarSyncAdapter
│   │   └── GoogleCalendarSyncAdapter.apk
│   ├── GoogleContactsSyncAdapter
│   │   └── GoogleContactsSyncAdapter.apk
│   ├── GoogleExtShared
│   │   └── GoogleExtShared.apk
│   └── GoogleTTS
│       └── GoogleTTS.apk
├── etc
│   ├── default-permissions
│   │   ├── default-permissions.xml
│   │   └── opengapps-permissions-q.xml
│   ├── permissions
│   │   ├── com.google.android.dialer.support.xml
│   │   ├── com.google.android.maps.xml
│   │   ├── com.google.android.media.effects.xml
│   │   ├── privapp-permissions-google.xml
│   │   └── split-permissions-google.xml
│   ├── preferred-apps
│   │   └── google.xml
│   └── sysconfig
│       ├── dialer_experience.xml
│       ├── google_build.xml
│       ├── google_exclusives_enable.xml
│       ├── google-hiddenapi-package-whitelist.xml
│       └── google.xml
├── framework
│   ├── com.google.android.dialer.support.jar
│   ├── com.google.android.maps.jar
│   └── com.google.android.media.effects.jar
├── priv-app
│   ├── AndroidAutoPrebuiltStub
│   │   └── AndroidAutoPrebuiltStub.apk
│   ├── AndroidMigratePrebuilt
│   │   └── AndroidMigratePrebuilt.apk
│   ├── CarrierSetup
│   │   └── CarrierSetup.apk
│   ├── ConfigUpdater
│   │   └── ConfigUpdater.apk
│   ├── GoogleBackupTransport
│   │   └── GoogleBackupTransport.apk
│   ├── GoogleExtServices
│   │   └── GoogleExtServices.apk
│   ├── GoogleFeedback
│   │   └── GoogleFeedback.apk
│   ├── GoogleOneTimeInitializer
│   │   └── GoogleOneTimeInitializer.apk
│   ├── GooglePackageInstaller
│   │   └── GooglePackageInstaller.apk
│   ├── GooglePartnerSetup
│   │   └── GooglePartnerSetup.apk
│   ├── GoogleRestore
│   │   └── GoogleRestore.apk
│   ├── GoogleServicesFramework
│   │   └── GoogleServicesFramework.apk
│   ├── Phonesky
│   │   └── Phonesky.apk
│   ├── PrebuiltGmsCore
│   │   └── PrebuiltGmsCore.apk
│   └── SetupWizard
│       └── SetupWizard.apk
└── product
│   └── overlay
│      └── PlayStoreOverlay.apk
└── system
30 directories, 36 files

安裝 Google Play 套件

取得 root 權限,重新連結後移除舊有套件
adb connect localhost:5555
adb -s localhost:5555 root
adb connect localhost:5555
adb -s localhost:5555 shell "rm -rf system/priv-app/PackageInstaller"
推送整理好的 system 到裝置中
adb -s localhost:5555 push system /
adb -s localhost:5555 shell "pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION"
adb -s localhost:5555 shell "pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION"
adb -s localhost:5555 shell "pm grant com.google.android.setupwizard android.permission.READ_PHONE_STATE"
adb -s localhost:5555 shell "pm grant com.google.android.setupwizard android.permission.READ_CONTACTS"
adb reboot
重新啟動 ReDroid 容器
sudo docker ps -a 
sudo docker restart <容器ID>
$ adb connect localhost:5555
connected to localhost:5555
$ adb devices
List of devices attached
localhost:5555	device

註冊裝置

新版 Google Play 要認證裝置並取得證書才能使用,自製的虛擬裝置也可以,但要上 Google 網站認證:
方法就是透過 ADB 取得裝置 ID,手動申請,過幾分鐘就會開通
$ adb -s localhost:5555 root
$ adb connect localhost:5555
$ adb -s localhost:5555 shell 'sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \
    "select * from main where name = \"android_id\";"'
之後重新啟動容器並連接裝置
$ sudo docker restart redroid11
$ adb connect localhost:5555
$ scrcpy -s localhost:5555
就可以開心從虛擬裝置中透過 Google Play 去下載所需的 App

待測 App 處理

待測的 App 可以從兩個面向看,一是有沒有上架 PlayStore,二是有沒有原始開發團隊支持。
有沒有開發團隊支援的差別在於,後續測試 App 時需要知道關鍵的 Activities 跟 Components,有的話直接問比較快,沒有的話就要暴力拆解猜測。

下載 App

有上架 PlayStore 在 Google Play 框架裝好後,就能直接從市集取用。沒有的話要手動從非官方網站獲得,就會有暴露被植入惡意木馬的風險。
前者就略過,自行上市集下載即可,後者可以用的網站有:
  1. Evozi APK Downloader:貼上 Play Store 網站的連結就可以幫你下載
  2. APK Pure:知名的第三方下載源
  3. APK Mirror:知名的第三方下載源
再次提醒,使用非官方下載,要提防安全風險。

安裝 App

這邊使用 ADB 就能簡單完成
adb -s localhost:5555 install "jp.naver.line.android.apk"

執行並檢視 Log

這邊一樣透過 ADB 獲得裝置的即時 Log
adb logcat

小結

這一系列把作業系統、容器、安卓容器跟官方市集都講完了,接下來就會真正進入測試工具 Appium。
為什麼會看到廣告
avatar-img
10會員
16內容數
記錄分享如何做軟體自動測試
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Scott Hsiao的沙龍 的其他內容
前言 前兩篇把作業系統跟 Docker 安裝講完了,接下來就是 Android 容器的安裝了,這裡選用 ReDroid ,因為它是開源、高效、又便於管理的方案。
前言 前篇把 Ubuntu 作業系統的安裝跟準備談完了,有需要可以跳回去看。接下來聊容器服務 Docker 的安裝與使用。 Docker 可以應用的場合很多,這次是會用它來模擬 Android 受測裝置
前言 本 App 自動化測試專題,用來記錄自動化 App 測試的各環節,包含環境準備、套件安裝、腳本編寫、執行測試與整合。
前言 前兩篇把作業系統跟 Docker 安裝講完了,接下來就是 Android 容器的安裝了,這裡選用 ReDroid ,因為它是開源、高效、又便於管理的方案。
前言 前篇把 Ubuntu 作業系統的安裝跟準備談完了,有需要可以跳回去看。接下來聊容器服務 Docker 的安裝與使用。 Docker 可以應用的場合很多,這次是會用它來模擬 Android 受測裝置
前言 本 App 自動化測試專題,用來記錄自動化 App 測試的各環節,包含環境準備、套件安裝、腳本編寫、執行測試與整合。
你可能也想看
Google News 追蹤
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
每當我學習新東西,總是感到無比的興奮。相較於買車出遊,我更喜歡透過摸索新事物來擴展自己的眼界。 ▋透過閱讀擴展視野 我主要透過購買書籍來進行探索,這也多虧父母從小到大提供的經濟支持。從幼稚園到博士畢業,我大概購買了四五千冊的書籍。父親甚至在我的房間外搭了一個鐵皮屋,專門用來存放我各式各樣
Thumbnail
Relay.app 是簡單強大的自動化 No Code 工具,支援約百種數位工具,操作介面簡單易上手。內建串接 OpenAI,只要簡單輸入指令,即可獲得 AI 生成回覆!更棒的是,可以整合真人決策進入自動化工作流程,使人力介入不再中斷自動化,打造更全面完整工作流程,提升團隊協作,專案管理更有效率!
Thumbnail
你知道,義大利經濟學家帕雷托(Vilfredo Pareto)提出的帕雷托法則,又以80/20法則、或八二法則著名,用在人極其一生努力賺錢又邊花錢的過程中,世界上有80%的人感慨財富不足、都在羨慕那20%財富自由的人;自問即便財務目標沒有設立很高,為何依然錢存不到自己要的目標?! 在陪伴協助許
Thumbnail
工作時常會需要固定發廣告信,或業務開發信的話,可以考慮用google app script,呼叫gmail 的方式來處理。
Thumbnail
2023台灣用戶十大愛用LINE功能出爐!根據LINE團隊觀察自2022年12月至2023年11月,最受台灣用戶青睞的LINE功能就是解放主題富翁時間的「主題自動輪播」,第二名則是運用AI技術自動生成個人照片的「個人檔案工作室」,第三名為台灣暨全球首發的「父親節聊天室特效」。
Thumbnail
這是我跟chatgpt協作整理出來的一些知識: 蠻神奇的事情是我記得CHATGPT無法連網,他居然能知道我這個專案是做 投資建議訊號推送的telegrambot機器人,我完全沒有頭緒他怎麼知道的
Thumbnail
語言學習如果只限於課堂,很容易變得枯燥乏味。身處科技時代的我們,早就習慣用手機完成生活中的大小事,越南語的學習也可以搬到手機裡!跟大家分享9款學習越南語App,主要用遊戲化的方式學習,設置了各種遊戲關卡,還有機器人學伴陪伴你一起學越南語。另外,更需要多樣化的測驗來檢測自己的程度到哪裡。
Thumbnail
日文有所謂的高低音(類似英文的重音),很像中文發聲系統的第一聲和第三聲。高低音唸反了,在日文可是會把「神」(唸「咖米」)講錯成「頭髮」(唸「卡咪」)的,所以擁有標示重音的字典是很重要的事。自從看見網友說日本知名字典網站已取消單字的重音標示,我就趕快找了其他替代的重音兼發音字典,有一家app我特中意。
Thumbnail
今天和各位介紹一款完全免費的自學漢字app-Noodle Chinese,利用動畫的方式帶著學生寫字,來降低初學者對漢字的恐懼。另外Noodle Chinese本身就有字典的功能,在查字典的同時,也能直接創立自己的生字包,並且開始練習寫字!
Thumbnail
今天想和各位老師介紹一款來自介面設計相當精美的單字APP Drops最近新推出的寫字APP- Scripts。利用每天短短的五分鐘,透過不同的練習方式來寫字,能讓學生在無壓力的情況下學習新的生字!同時Scripts色彩豐富、操作簡單,也很適合一開始接觸漢字的學習者使用!
Thumbnail
投資新手大多從身邊市場開始著手,選擇台股市場入門,單筆投資或台股定期定額投資,隨著經驗累積,進入美股市場也是好選擇,這篇文章帶你前進美股投資,證券開戶選擇國內券商複委託,使用美股定期定額投資,並以國泰 CUBE App為例說明。 內容目錄: 1.一站式開戶:以國泰世華 CUBE App 為例
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
每當我學習新東西,總是感到無比的興奮。相較於買車出遊,我更喜歡透過摸索新事物來擴展自己的眼界。 ▋透過閱讀擴展視野 我主要透過購買書籍來進行探索,這也多虧父母從小到大提供的經濟支持。從幼稚園到博士畢業,我大概購買了四五千冊的書籍。父親甚至在我的房間外搭了一個鐵皮屋,專門用來存放我各式各樣
Thumbnail
Relay.app 是簡單強大的自動化 No Code 工具,支援約百種數位工具,操作介面簡單易上手。內建串接 OpenAI,只要簡單輸入指令,即可獲得 AI 生成回覆!更棒的是,可以整合真人決策進入自動化工作流程,使人力介入不再中斷自動化,打造更全面完整工作流程,提升團隊協作,專案管理更有效率!
Thumbnail
你知道,義大利經濟學家帕雷托(Vilfredo Pareto)提出的帕雷托法則,又以80/20法則、或八二法則著名,用在人極其一生努力賺錢又邊花錢的過程中,世界上有80%的人感慨財富不足、都在羨慕那20%財富自由的人;自問即便財務目標沒有設立很高,為何依然錢存不到自己要的目標?! 在陪伴協助許
Thumbnail
工作時常會需要固定發廣告信,或業務開發信的話,可以考慮用google app script,呼叫gmail 的方式來處理。
Thumbnail
2023台灣用戶十大愛用LINE功能出爐!根據LINE團隊觀察自2022年12月至2023年11月,最受台灣用戶青睞的LINE功能就是解放主題富翁時間的「主題自動輪播」,第二名則是運用AI技術自動生成個人照片的「個人檔案工作室」,第三名為台灣暨全球首發的「父親節聊天室特效」。
Thumbnail
這是我跟chatgpt協作整理出來的一些知識: 蠻神奇的事情是我記得CHATGPT無法連網,他居然能知道我這個專案是做 投資建議訊號推送的telegrambot機器人,我完全沒有頭緒他怎麼知道的
Thumbnail
語言學習如果只限於課堂,很容易變得枯燥乏味。身處科技時代的我們,早就習慣用手機完成生活中的大小事,越南語的學習也可以搬到手機裡!跟大家分享9款學習越南語App,主要用遊戲化的方式學習,設置了各種遊戲關卡,還有機器人學伴陪伴你一起學越南語。另外,更需要多樣化的測驗來檢測自己的程度到哪裡。
Thumbnail
日文有所謂的高低音(類似英文的重音),很像中文發聲系統的第一聲和第三聲。高低音唸反了,在日文可是會把「神」(唸「咖米」)講錯成「頭髮」(唸「卡咪」)的,所以擁有標示重音的字典是很重要的事。自從看見網友說日本知名字典網站已取消單字的重音標示,我就趕快找了其他替代的重音兼發音字典,有一家app我特中意。
Thumbnail
今天和各位介紹一款完全免費的自學漢字app-Noodle Chinese,利用動畫的方式帶著學生寫字,來降低初學者對漢字的恐懼。另外Noodle Chinese本身就有字典的功能,在查字典的同時,也能直接創立自己的生字包,並且開始練習寫字!
Thumbnail
今天想和各位老師介紹一款來自介面設計相當精美的單字APP Drops最近新推出的寫字APP- Scripts。利用每天短短的五分鐘,透過不同的練習方式來寫字,能讓學生在無壓力的情況下學習新的生字!同時Scripts色彩豐富、操作簡單,也很適合一開始接觸漢字的學習者使用!