記 android app 開啟錯誤

更新 發佈閱讀 6 分鐘
vocus|新世代的創作平台

去年12月底 , 有客戶反應 , 在 android 11 的手機 , 公司 app 開不起來

或開起來跑很久 , 空白頁..........登入畫面空白

之類奇怪的問題

一開始用 Android studio 的模擬器試 , 沒問題

看來需要實機了

於是就開始與手機農場的奮戰之路

Visual Studio App Center

後來在這手機農場嘗試 , 幸運的 , 它剛好有 Pixel 5 的手機 (Pixel 5 也是出問題的機型)

一開始是用 Appium , 因為 support ionic cordova (公司 app 用的框架)

但是照著 doc 做 , mvn 一直無法 build 起來

後來問了同事 , 同事建議放棄 , 他說 mvn 很多雷(難怪以前 IRI 我也 build 不起來.......)

直接用 Android studio 內建的 UI Test framework : Espresso

困難

這邊真的要感謝同事 , 有專門在寫原生 Android APP 就是不一樣

公司 app 是用 ionic cordova , 前端語言是 Angular

一一來說明遇到的困難點

  1. 首先 , ionic 是用 webview 執行 Angular build 出來的 code , 在 App Center 內 , 它的執行 log 不包含 js , html , 相關訊息只有 java 相關訊息會被記錄 , js 和 html 需要另外處理
  2. Angular build 出來的 code 會被重新打包和混淆 , 就算可以拿到 error 的 function call stack , 也對修正問題沒有意義
  3. ionic cordova 產生 android 的專案 , 不像從 Android studio 新建專案一樣  目錄結構有出入 , 測試相關需要自己處理
  4. Espresso 要用 kotlin 或 java 寫測試腳本 , 兩個都沒學過

魔改

有鑑於以上種種困難 , 正規手法也不行啦 , 要走點邪道

Espresso 要測要用 android studio , 可是 ionic build 出來不是正規的

那就補東西讓它是正常的

具體來說 , 就是改 platform/android/app/ 底下的 build.gradle

把測試相關的依賴補進去 , 詳細參考 Espresso 文件

然後在 /app/src 內補上 androidTest/xx/aa..../test.?

test.? 隨便命名 , ? 是 kt 或 java

xx 是 kotlin 或 java 二選一 , 要跟 test.? 的副檔名一樣

aa.... 請比照 /app/src/main/xx/ 下的目錄 , 取一樣的目錄名

在最後的目錄內的檔案 , 就是 test.?

這樣 platform 下的 android 用 android studio 開啟 , 就是正規的專案結構

接著在 test.? 右鍵執行測試 , 測試完 platform/android/app/build/output 內

會有 App Center 需要的兩個 apk 檔

log server

對於 App Center 無法紀錄 webview 內 js , html 執行情況

這邊用額外的 log server 來處理

簡單來說 , 就是遇到 error 就用 fetch 丟到 log server 紀錄

由於有公司 aws 的帳號 , log server 直接用 api gateway +lambda 處理掉

接著 , Angular 的 component , 可以註冊整個組件共用的 error handler

所以就在那 handler 把 error 傳給 log server

另外 , 有些錯誤是透過 console 輸出的 , 這些也要記錄到 log server

參考此篇文章 :

https://stackoverflow.com/questions/19846078/how-to-read-from-chromes-console-in-javascript

魔改了 console , 放到 ionic 專案下 , src/index.html 的 head 內

至於 Espresso 的測試腳本 , 拿官方 example 抄 XD

需要注意是要用 onWebView() 來進行測試

由於 app 是用 ionic 的 UI framwork (標籤是 ion-x) , 不太好測試

建議用 ionic server 觀察 html tag , 來看如何找到特定的標籤來操作

Pixel 5 開啟轉很久的原因..........

經過上面開發後 , 在 log server 內發現

開 DB 失敗 , 查了一下 , 是廢棄不用的 sqlLite plugin 造成的

移除掉就沒事了.........

至於其它 Android 11 手機的問題 , 以後再來處理XD

結尾

這次問題累死我了 , 前後糾纏快三個月

上面這些足足花了快三星期 , 直到今天才有進展

所以寫一篇文記錄血淚XD





留言
avatar-img
proof.K的沙龍
3會員
11內容數
proof.K的沙龍的其他內容
2024/12/29
第一份工作是做一年的區塊鏈相關顧問 主要是做共識算法的安全部份 甚至是這個算法到底能不能動(其實後面實驗是不行的) 到後面倒不是沒有繼續做的機會 只是這跟形式化驗證一樣 不是流行的技術,對年資不多的人,工作是難找的 另一個不在繼續的理由是,我覺得花時間去弄一個落不了地 甚至算法本身有問
2024/12/29
第一份工作是做一年的區塊鏈相關顧問 主要是做共識算法的安全部份 甚至是這個算法到底能不能動(其實後面實驗是不行的) 到後面倒不是沒有繼續做的機會 只是這跟形式化驗證一樣 不是流行的技術,對年資不多的人,工作是難找的 另一個不在繼續的理由是,我覺得花時間去弄一個落不了地 甚至算法本身有問
2021/02/25
最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開
2021/02/25
最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開
2019/05/16
網路上有許多解釋雙花(double-spending)攻擊的文章 可是個人認為都不夠全面 , 所以來談談這問題各個面向 雙花的過程 假設有賣家 A , B 攻擊者 C 攻擊者 C 先向賣家 A 買東西 等共識機制讓 C 轉帳 A 的交易確認後 攻擊者 C 發動攻擊 , 讓 C 轉帳 A
2019/05/16
網路上有許多解釋雙花(double-spending)攻擊的文章 可是個人認為都不夠全面 , 所以來談談這問題各個面向 雙花的過程 假設有賣家 A , B 攻擊者 C 攻擊者 C 先向賣家 A 買東西 等共識機制讓 C 轉帳 A 的交易確認後 攻擊者 C 發動攻擊 , 讓 C 轉帳 A
看更多
你可能也想看
Thumbnail
今天當你完成了你心目中完美的作品,迫不及待的想要放到商店上讓大家下載使用,卻沒想到是噩夢的開始?!從上架前的審查,到上架後的各種問題浮現,讓你焦頭爛額了嗎?這裡和你分享一下4種在APP「上線期」會遇到的問題和解決方法,讓你上線沒煩惱。
Thumbnail
今天當你完成了你心目中完美的作品,迫不及待的想要放到商店上讓大家下載使用,卻沒想到是噩夢的開始?!從上架前的審查,到上架後的各種問題浮現,讓你焦頭爛額了嗎?這裡和你分享一下4種在APP「上線期」會遇到的問題和解決方法,讓你上線沒煩惱。
Thumbnail
說明Flutter 模組(Module)專案範例的架構與如何載入Android專案中的流程與執行畫面
Thumbnail
說明Flutter 模組(Module)專案範例的架構與如何載入Android專案中的流程與執行畫面
Thumbnail
設計時的考量主要有:(1) App 是 Internet App,在考量 UI 體驗和網路頻寬的消耗,多數資料需以某種形式儲存部分資料在行動裝置上;(2) 因此會需要同步伺服器端和行動裝置端之間資料狀態;(3) 但行動裝置網路的穩定性不如一般網路可靠,要有足夠的自動化測試驗證正常的流程與異常的流程。
Thumbnail
設計時的考量主要有:(1) App 是 Internet App,在考量 UI 體驗和網路頻寬的消耗,多數資料需以某種形式儲存部分資料在行動裝置上;(2) 因此會需要同步伺服器端和行動裝置端之間資料狀態;(3) 但行動裝置網路的穩定性不如一般網路可靠,要有足夠的自動化測試驗證正常的流程與異常的流程。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
前言 上篇我們成功執行第一個測試案例,從 Python 腳本透過 Appium 控制模擬器點選設定中的電池,下個問題就是怎麼找元件,這時候就要請出 Appium Inspector 了
Thumbnail
前言 上篇我們成功執行第一個測試案例,從 Python 腳本透過 Appium 控制模擬器點選設定中的電池,下個問題就是怎麼找元件,這時候就要請出 Appium Inspector 了
Thumbnail
本篇文章將介紹開發 Android 手機應用程式所需的開發軟體,Google 官方的開發工具 Android Studio。這款軟體不僅免費,還提供完整的支援,適合所有 Android 開發者使用。
Thumbnail
本篇文章將介紹開發 Android 手機應用程式所需的開發軟體,Google 官方的開發工具 Android Studio。這款軟體不僅免費,還提供完整的支援,適合所有 Android 開發者使用。
Thumbnail
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
在開發產品過程中,不難發現研發和設計團隊時常因各自所處的角度不同,使得在溝通來回上花了不少時間。所以小弟整理些過去常在工作場景下遇到的一些資訊技術的專有名詞,化解那些雞同鴨講的無效溝通。
Thumbnail
在開發產品過程中,不難發現研發和設計團隊時常因各自所處的角度不同,使得在溝通來回上花了不少時間。所以小弟整理些過去常在工作場景下遇到的一些資訊技術的專有名詞,化解那些雞同鴨講的無效溝通。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News