記 android app 開啟錯誤

閱讀時間約 5 分鐘
這次錯誤在Android 11 發生
去年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
    3會員
    11內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    proof.K的沙龍 的其他內容
    最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開
    網路上有許多解釋雙花(double-spending)攻擊的文章 可是個人認為都不夠全面 , 所以來談談這問題各個面向 雙花的過程 假設有賣家 A , B 攻擊者 C 攻擊者 C 先向賣家 A 買東西 等共識機制讓 C 轉帳 A 的交易確認後 攻擊者 C 發動攻擊 , 讓 C 轉帳 A
    會想談這個是因為就連在產業裡做的人 , 也會有奇怪的理解 blockchain網路與分散式網路的不同 從技術上來講 , 沒有不同  甚至 blockchain 技術還要更深 , 因為要解決拜占庭問題 但從產權 , 所有權的角度看 就有很大的不同 , 而這不同對在blockchain上的應用是巨大
    udn 的新聞標題 : 五大電信業 不看好5G商機 這讓我想到以前看的一篇文章 :  twicic : 電信業者不想被偷走的晚餐— 台灣電子業今天看什麼? 20160928 一篇是 2016 年的
    10月初去參加Meyou的路演 Meyou做什麼 , google 就有了  所以不多說 會後跟相關的網紅聊了一下 第一句問Meyou跟其他直播平台有什麼差別? 對方回答沒有差別 , 跟心中期望的有點
    为什么在以太坊上构建项目注定会失败?!: E 上面這篇已經把有獎勵機制的DLT問題講得很清楚了 只能說獎勵機制是兩難 運行帳本需要 server , 開 server 需要電 , 電要錢 所以有獎勵
    最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開
    網路上有許多解釋雙花(double-spending)攻擊的文章 可是個人認為都不夠全面 , 所以來談談這問題各個面向 雙花的過程 假設有賣家 A , B 攻擊者 C 攻擊者 C 先向賣家 A 買東西 等共識機制讓 C 轉帳 A 的交易確認後 攻擊者 C 發動攻擊 , 讓 C 轉帳 A
    會想談這個是因為就連在產業裡做的人 , 也會有奇怪的理解 blockchain網路與分散式網路的不同 從技術上來講 , 沒有不同  甚至 blockchain 技術還要更深 , 因為要解決拜占庭問題 但從產權 , 所有權的角度看 就有很大的不同 , 而這不同對在blockchain上的應用是巨大
    udn 的新聞標題 : 五大電信業 不看好5G商機 這讓我想到以前看的一篇文章 :  twicic : 電信業者不想被偷走的晚餐— 台灣電子業今天看什麼? 20160928 一篇是 2016 年的
    10月初去參加Meyou的路演 Meyou做什麼 , google 就有了  所以不多說 會後跟相關的網紅聊了一下 第一句問Meyou跟其他直播平台有什麼差別? 對方回答沒有差別 , 跟心中期望的有點
    为什么在以太坊上构建项目注定会失败?!: E 上面這篇已經把有獎勵機制的DLT問題講得很清楚了 只能說獎勵機制是兩難 運行帳本需要 server , 開 server 需要電 , 電要錢 所以有獎勵
    你可能也想看
    Google News 追蹤
    Thumbnail
    夢見我在一個專案團隊,幫佛教團體開發手機 APP。程式開發完成,我們分送給許多人,希望他們一起來參與測試。 我在寫推廣文章,表示測試版的 APP 需要更多人參與測試,才會越來越好。但我開始收到師兄師姐們的意見反彈,認為測試版本有這麼多的問題,反正就是嚴厲反對,也禁止大家使用。 我覺得相當沮喪。明
    Thumbnail
    事源我有個文檔用了前公司最新版本After Effect保存 帶回家才發現這個版本不兼容。而且第一個版本都不能打開(這也算AE超白癡的地方,2023都就已經不能打開2024的文檔)。
    Thumbnail
    本章節提供了設置Kotlin開發環境的多種選擇,包括使用IntelliJ IDEA、Android Studio、命令行工具、Visual Studio Code,以及在線編輯器。每種方法都有詳細的步驟說明,旨在幫助讀者根據自己的需求選擇最適合的設置方式,並順利開始Kotlin開發。
    Thumbnail
    # 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
    Thumbnail
    Line的問題一直很多,最近 Android系的又開始遇到語音來電有鈴聲,但什麼事都沒辦法做的狀況。 以往都是Android系統的權限被關,例如懸浮在畫面上方、顯示在其他應用程式上層等等,這些仍然是每次都必須檢查的重點。 接著是 Line裡面的設定,是最近可能發生的。首先切換到最左邊的「主頁」,
    Thumbnail
    在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
    Thumbnail
    筆者習慣當手機出現以下三個症狀時,換換病就會發作,但不見得是換新手機或是高階手機,全然憑當時的心情去做更換。 手機來電時不會響 (Apple),連手機最基本的通話功能都不具備了,怎麼能不換呢? 通訊軟體不會響(Android),這點倒是不分品牌都會發生,但這鍋應該是軟體要背才對,又肥又重的軟體才
    Thumbnail
    今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
    Thumbnail
    本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
    Thumbnail
    我們將深入介紹如何使用 Kotlin 在 Android 平台上開發一個簡單的計算機應用程式。這個課程的目標是教授大家如何通過點擊計算機鍵盤,輸入算式,並得到計算結果。透過這套課程,你將能夠熟練掌握 Kotlin 語言在 Android 開發中的實際應用,並輕鬆打造出屬於自己的計算機應用程式。
    Thumbnail
    夢見我在一個專案團隊,幫佛教團體開發手機 APP。程式開發完成,我們分送給許多人,希望他們一起來參與測試。 我在寫推廣文章,表示測試版的 APP 需要更多人參與測試,才會越來越好。但我開始收到師兄師姐們的意見反彈,認為測試版本有這麼多的問題,反正就是嚴厲反對,也禁止大家使用。 我覺得相當沮喪。明
    Thumbnail
    事源我有個文檔用了前公司最新版本After Effect保存 帶回家才發現這個版本不兼容。而且第一個版本都不能打開(這也算AE超白癡的地方,2023都就已經不能打開2024的文檔)。
    Thumbnail
    本章節提供了設置Kotlin開發環境的多種選擇,包括使用IntelliJ IDEA、Android Studio、命令行工具、Visual Studio Code,以及在線編輯器。每種方法都有詳細的步驟說明,旨在幫助讀者根據自己的需求選擇最適合的設置方式,並順利開始Kotlin開發。
    Thumbnail
    # 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
    Thumbnail
    Line的問題一直很多,最近 Android系的又開始遇到語音來電有鈴聲,但什麼事都沒辦法做的狀況。 以往都是Android系統的權限被關,例如懸浮在畫面上方、顯示在其他應用程式上層等等,這些仍然是每次都必須檢查的重點。 接著是 Line裡面的設定,是最近可能發生的。首先切換到最左邊的「主頁」,
    Thumbnail
    在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
    Thumbnail
    筆者習慣當手機出現以下三個症狀時,換換病就會發作,但不見得是換新手機或是高階手機,全然憑當時的心情去做更換。 手機來電時不會響 (Apple),連手機最基本的通話功能都不具備了,怎麼能不換呢? 通訊軟體不會響(Android),這點倒是不分品牌都會發生,但這鍋應該是軟體要背才對,又肥又重的軟體才
    Thumbnail
    今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
    Thumbnail
    本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
    Thumbnail
    我們將深入介紹如何使用 Kotlin 在 Android 平台上開發一個簡單的計算機應用程式。這個課程的目標是教授大家如何通過點擊計算機鍵盤,輸入算式,並得到計算結果。透過這套課程,你將能夠熟練掌握 Kotlin 語言在 Android 開發中的實際應用,並輕鬆打造出屬於自己的計算機應用程式。