MAUI 和 Xamarin SDK 疑難解答
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。
收集詳細信息記錄
若要取得如何將記錄層級調整為 VERBOSE
的指示,請參閱 其他 API 一 節。
您可以在 [偵>錯Windows>輸出] 視窗中找到詳細信息記錄。
安裝期間的問題
- 針對 Xamarin.Forms 應用程式,請確定套件已安裝在參考任何連結庫的所有專案中。 否則您會看到錯誤。
- 如果您在建置 Xamarin.iOS 時看到此錯誤:
MTOUCH: Error MT3001: Could not AOT the assembly 'obj/**/Build/Microsoft.AppCenter.**.iOS.Bindings.dll' (MT3001)
您必須將 Xamarin.iOS 元件更新為 10.4.0.128 版或更新版本。 - 如果您在建置 Xamarin.iOS 時看到此錯誤:
MTOUCH: Error MT5210: Native linking failed, undefined symbol: _OBJC_METACLASS_$_MS{SomeSdkClassName}. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in. (MT5210)
或類似的錯誤 (MT5211
程式代碼,並提及 App Center) 類似的訊息,請務必在使用特定服務的 API 之前呼叫AppCenter.Start
。 如果您呼叫Start
但發生此問題,您必須將 Xamarin.iOS 元件更新為 10.4.0.128 版或更新版本。 - 在控制台中,尋找具有訊息的 Assert 記錄檔 -「App Center SDK 已成功設定」。 這會驗證 SDK 是否已順利設定。
分析數據不會顯示在入口網站中
請確定您已正確整合 SDK 模組。
請確定包含正確的應用程式密碼以及
Start()
方法呼叫。 您可以在入口網站中開啟應用程式並流覽至 [使用者入門] 頁面,以複製確切Start()
的程序代碼。如果您想要查看傳送至後端的記錄,請將記錄層級變更為應用程式中 的詳細資訊 ,SDK 會在控制台中列印記錄。 在您啟動 SDK 之前,請先呼叫下列 API。
AppCenter.LogLevel = LogLevel.Verbose;
請檢查 [信息記錄層級]) 中的 [App Center SDK 已順利設定] (記錄,然後檢查您是否看到 HTTPS 要求記錄。
請確定您的裝置已上線。
有時候,記錄可能需要幾分鐘的時間才會出現在入口網站中。 如果是這種情況,請稍候一段時間。
若要檢查 App Center 後端是否收到您的數據,請移至 Analytics 服務中的記錄流程區段。 一旦傳送事件,您的事件就應該會出現。
入口網站中未顯示當機
請確定您已正確整合 SDK 模組。
請確定包含正確的應用程式密碼以及
Start()
方法呼叫。 您可以在入口網站中開啟應用程式並流覽至 [使用者入門] 頁面,以複製確切Start()
的程序代碼。當機後重新啟動應用程式。 App Center 當機只會在重新啟動後轉送損毀記錄檔。 此外,當您附加調試程式時,在 Xamarin.iOS 和 Xamarin.Mac 上,SDK 將不會儲存任何損毀記錄檔。 當您損毀 iOS 應用程式時,請確定調試程式未附加。 在 Xamarin.Android 上,您可以在附加調試程式時當機,但必須在中斷未處理的例外狀況之後繼續執行。
如果您想要查看傳送至後端的記錄,請將記錄層級變更為應用程式中 的詳細資訊 ,SDK 會在控制台中列印記錄。 在您啟動 SDK 之前,請先呼叫下列 API。
AppCenter.LogLevel = LogLevel.Verbose;
請檢查 [信息記錄層級]) 中的 [App Center SDK 已順利設定] (記錄,然後檢查您是否看到 HTTPS 要求記錄。
請勿使用任何其他提供損毀報告功能的連結庫,例如 Xamarin Insights 或 HockeyApp。 您只能整合一個損毀報告 SDK。
請確定您的裝置已上線。
有時候,記錄可能需要幾分鐘的時間才會出現在入口網站中。 如果是這種情況,請稍候一段時間。
如果您想要檢查 SDK 是否偵測到下一個應用程式啟動時當機,您可以呼叫 API 來檢查應用程式是否在最後一個工作階段中當機,並顯示警示。 或者,您可以擴充損毀回呼,以查看它是否已成功傳送至伺服器。
若要檢查 App Center 後端是否收到當機,請移至 Analytics 服務中的 [記錄流程] 區段。 當系統傳送時,您的當機應該會出現在該處。
散發和應用程式內更新封鎖我的自動化UI測試
如果您執行自動化 UI 測試,啟用的應用程式內更新將會封鎖自動化 UI 測試,因為它們會嘗試向 App Center 後端進行驗證。 建議您不要為您的UI測試啟用App Center散發。
新增 DistributePlay 之後,Google Play 會拒絕應用程式
Google Play 會拒絕使用 Distribute
模組的應用程式,因為它包含應用程式內更新實作。 為了避免這種情況,App Center SDK 有 DistributePlay
模組,其中包含主要模組的存根。 它會以模擬 API 的 stubbed 元件取代主要元件 Distribute
。 用戶端應用程式中不需要任何額外的變更。 DistributePlay
沒有任何應用程式內更新相關程序代碼。
如果在將 Distribute
模組取代為 DistributePlay
您的應用程式仍然遭到拒絕之後,請遵循下列步驟來確認 Distribute
模組已正確取代:
- 請確定您在 Google Play 控制台中所有發布群組的所有版本中都已取代
Distribute
DistributePlay
為 。 - 如果您使用
Xamarin.Forms
,請確定您已將DistributePlay
模組新增至共用和Xamarin.Android
專案。 - 確認您的輸出檔案未包含
Microsoft.AppCenter.Distribute.Android.Bindings.dll
元件。 您可以使用 APK 分析器 來檢查它。
控制台中的訊息,指出無法在iOS上開啟資料庫
App Center 會先使用 SQLite 來保存記錄,再傳送至後端。 如果您要將應用程式與自己的 SQLite 連結庫結合,而不是使用 OS 所提供的連結庫,您可能會在控制台 [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database
中看到類似這樣的錯誤,而且不會在後端看到任何分析或當機資訊。 將 SDK 更新為 0.16.0 版或更新版本。
保護App Center秘密值
app_secret
是應用程式的標識碼,必須知道流量要套用到哪個應用程式,而且無法用來擷取或編輯現有的數據。 如果公開, app_secret
最大的風險是將不正確的數據傳送至您的應用程式,但不會影響數據的安全性。
若要擷取任何敏感數據,您必須提供在用戶端產生的應用程式/使用者 令牌。 沒有任何方法可讓用戶端上的數據完全安全。
您可以使用環境變數將應用程式秘密插入程式碼,以改善應用程式的安全性。 如此一來,程序代碼中看不到秘密。